mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 09:39:15 +00:00
obs-outputs: Remove legacy multitrack code
This commit is contained in:
parent
371e8334dd
commit
d310f1532b
|
@ -58,11 +58,11 @@ void write_file_info(FILE *file, int64_t duration_ms, int64_t size)
|
|||
fwrite(buf, 1, enc - buf, file);
|
||||
}
|
||||
|
||||
static bool build_flv_meta_data(obs_output_t *context, uint8_t **output,
|
||||
size_t *size, size_t a_idx)
|
||||
static void build_flv_meta_data(obs_output_t *context, uint8_t **output,
|
||||
size_t *size)
|
||||
{
|
||||
obs_encoder_t *vencoder = obs_output_get_video_encoder(context);
|
||||
obs_encoder_t *aencoder = obs_output_get_audio_encoder(context, a_idx);
|
||||
obs_encoder_t *aencoder = obs_output_get_audio_encoder(context, 0);
|
||||
video_t *video = obs_encoder_video(vencoder);
|
||||
audio_t *audio = obs_encoder_audio(aencoder);
|
||||
char buf[4096];
|
||||
|
@ -70,31 +70,23 @@ static bool build_flv_meta_data(obs_output_t *context, uint8_t **output,
|
|||
char *end = enc + sizeof(buf);
|
||||
struct dstr encoder_name = {0};
|
||||
|
||||
if (a_idx > 0 && !aencoder)
|
||||
return false;
|
||||
|
||||
enc_str(&enc, end, "@setDataFrame");
|
||||
enc_str(&enc, end, "onMetaData");
|
||||
|
||||
*enc++ = AMF_ECMA_ARRAY;
|
||||
enc = AMF_EncodeInt32(enc, end, a_idx == 0 ? 20 : 15);
|
||||
enc = AMF_EncodeInt32(enc, end, 20);
|
||||
|
||||
enc_num_val(&enc, end, "duration", 0.0);
|
||||
enc_num_val(&enc, end, "fileSize", 0.0);
|
||||
|
||||
if (a_idx == 0) {
|
||||
enc_num_val(&enc, end, "width",
|
||||
(double)obs_encoder_get_width(vencoder));
|
||||
enc_num_val(&enc, end, "height",
|
||||
(double)obs_encoder_get_height(vencoder));
|
||||
enc_num_val(&enc, end, "width",
|
||||
(double)obs_encoder_get_width(vencoder));
|
||||
enc_num_val(&enc, end, "height",
|
||||
(double)obs_encoder_get_height(vencoder));
|
||||
|
||||
enc_num_val(&enc, end, "videocodecid",
|
||||
VIDEODATA_AVCVIDEOPACKET);
|
||||
enc_num_val(&enc, end, "videodatarate",
|
||||
encoder_bitrate(vencoder));
|
||||
enc_num_val(&enc, end, "framerate",
|
||||
video_output_get_frame_rate(video));
|
||||
}
|
||||
enc_num_val(&enc, end, "videocodecid", VIDEODATA_AVCVIDEOPACKET);
|
||||
enc_num_val(&enc, end, "videodatarate", encoder_bitrate(vencoder));
|
||||
enc_num_val(&enc, end, "framerate", video_output_get_frame_rate(video));
|
||||
|
||||
enc_num_val(&enc, end, "audiocodecid", AUDIODATA_AAC);
|
||||
enc_num_val(&enc, end, "audiodatarate", encoder_bitrate(aencoder));
|
||||
|
@ -133,11 +125,10 @@ static bool build_flv_meta_data(obs_output_t *context, uint8_t **output,
|
|||
|
||||
*size = enc - buf;
|
||||
*output = bmemdup(buf, *size);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool flv_meta_data(obs_output_t *context, uint8_t **output, size_t *size,
|
||||
bool write_header, size_t audio_idx)
|
||||
void flv_meta_data(obs_output_t *context, uint8_t **output, size_t *size,
|
||||
bool write_header)
|
||||
{
|
||||
struct array_output_data data;
|
||||
struct serializer s;
|
||||
|
@ -146,12 +137,7 @@ bool flv_meta_data(obs_output_t *context, uint8_t **output, size_t *size,
|
|||
uint32_t start_pos;
|
||||
|
||||
array_output_serializer_init(&s, &data);
|
||||
|
||||
if (!build_flv_meta_data(context, &meta_data, &meta_data_size,
|
||||
audio_idx)) {
|
||||
bfree(meta_data);
|
||||
return false;
|
||||
}
|
||||
build_flv_meta_data(context, &meta_data, &meta_data_size);
|
||||
|
||||
if (write_header) {
|
||||
s_write(&s, "FLV", 3);
|
||||
|
@ -177,7 +163,6 @@ bool flv_meta_data(obs_output_t *context, uint8_t **output, size_t *size,
|
|||
*size = data.bytes.num;
|
||||
|
||||
bfree(meta_data);
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef DEBUG_TIMESTAMPS
|
||||
|
@ -373,7 +358,7 @@ static void flv_build_additional_meta_data(uint8_t **data, size_t *size)
|
|||
*size = out.bytes.num;
|
||||
}
|
||||
|
||||
bool flv_additional_meta_data(obs_output_t *context, uint8_t **data,
|
||||
void flv_additional_meta_data(obs_output_t *context, uint8_t **data,
|
||||
size_t *size)
|
||||
{
|
||||
obs_encoder_t *aencoder = obs_output_get_audio_encoder(context, 1);
|
||||
|
@ -382,9 +367,6 @@ bool flv_additional_meta_data(obs_output_t *context, uint8_t **data,
|
|||
uint8_t *meta_data = NULL;
|
||||
size_t meta_data_size;
|
||||
|
||||
if (!aencoder)
|
||||
return false;
|
||||
|
||||
flv_build_additional_meta_data(&meta_data, &meta_data_size);
|
||||
|
||||
array_output_serializer_init(&s, &out);
|
||||
|
@ -402,7 +384,6 @@ bool flv_additional_meta_data(obs_output_t *context, uint8_t **data,
|
|||
|
||||
*data = out.bytes.array;
|
||||
*size = out.bytes.num;
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline void s_u29(struct serializer *s, uint32_t val)
|
||||
|
|
|
@ -28,9 +28,9 @@ static int32_t get_ms_time(struct encoder_packet *packet, int64_t val)
|
|||
|
||||
extern void write_file_info(FILE *file, int64_t duration_ms, int64_t size);
|
||||
|
||||
extern bool flv_meta_data(obs_output_t *context, uint8_t **output, size_t *size,
|
||||
bool write_header, size_t audio_idx);
|
||||
extern bool flv_additional_meta_data(obs_output_t *context, uint8_t **output,
|
||||
extern void flv_meta_data(obs_output_t *context, uint8_t **output, size_t *size,
|
||||
bool write_header);
|
||||
extern void flv_additional_meta_data(obs_output_t *context, uint8_t **output,
|
||||
size_t *size);
|
||||
extern void flv_packet_mux(struct encoder_packet *packet, int32_t dts_offset,
|
||||
uint8_t **output, size_t *size, bool is_header);
|
||||
|
|
|
@ -106,7 +106,7 @@ static void write_meta_data(struct flv_output *stream)
|
|||
uint8_t *meta_data;
|
||||
size_t meta_data_size;
|
||||
|
||||
flv_meta_data(stream->output, &meta_data, &meta_data_size, true, 0);
|
||||
flv_meta_data(stream->output, &meta_data, &meta_data_size, true);
|
||||
fwrite(meta_data, 1, meta_data_size, stream->file);
|
||||
bfree(meta_data);
|
||||
}
|
||||
|
|
|
@ -423,7 +423,7 @@ static int send_packet(struct rtmp_stream *stream,
|
|||
}
|
||||
}
|
||||
|
||||
if (stream->using_metadata_multitrack && idx > 0) {
|
||||
if (idx > 0) {
|
||||
flv_additional_packet_mux(
|
||||
packet, is_header ? 0 : stream->start_dts_offset, &data,
|
||||
&size, is_header, idx);
|
||||
|
@ -436,11 +436,7 @@ static int send_packet(struct rtmp_stream *stream,
|
|||
droptest_cap_data_rate(stream, size);
|
||||
#endif
|
||||
|
||||
if (stream->using_metadata_multitrack) {
|
||||
idx = 0;
|
||||
}
|
||||
|
||||
ret = RTMP_Write(&stream->rtmp, (char *)data, (int)size, (int)idx);
|
||||
ret = RTMP_Write(&stream->rtmp, (char *)data, (int)size, 0);
|
||||
bfree(data);
|
||||
|
||||
if (is_header)
|
||||
|
@ -669,16 +665,13 @@ static void *send_thread(void *data)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static bool send_additional_meta_data(struct rtmp_stream *stream, size_t idx,
|
||||
bool *next)
|
||||
static bool send_additional_meta_data(struct rtmp_stream *stream)
|
||||
{
|
||||
uint8_t *meta_data;
|
||||
size_t meta_data_size;
|
||||
bool success = true;
|
||||
|
||||
*next = flv_additional_meta_data(stream->output, &meta_data,
|
||||
&meta_data_size);
|
||||
|
||||
flv_additional_meta_data(stream->output, &meta_data, &meta_data_size);
|
||||
success = RTMP_Write(&stream->rtmp, (char *)meta_data,
|
||||
(int)meta_data_size, 0) >= 0;
|
||||
bfree(meta_data);
|
||||
|
@ -686,20 +679,16 @@ static bool send_additional_meta_data(struct rtmp_stream *stream, size_t idx,
|
|||
return success;
|
||||
}
|
||||
|
||||
static bool send_meta_data(struct rtmp_stream *stream, size_t idx, bool *next)
|
||||
static bool send_meta_data(struct rtmp_stream *stream)
|
||||
{
|
||||
uint8_t *meta_data;
|
||||
size_t meta_data_size;
|
||||
bool success = true;
|
||||
|
||||
*next = flv_meta_data(stream->output, &meta_data, &meta_data_size,
|
||||
false, idx);
|
||||
|
||||
if (*next) {
|
||||
success = RTMP_Write(&stream->rtmp, (char *)meta_data,
|
||||
(int)meta_data_size, (int)idx) >= 0;
|
||||
bfree(meta_data);
|
||||
}
|
||||
flv_meta_data(stream->output, &meta_data, &meta_data_size, false);
|
||||
success = RTMP_Write(&stream->rtmp, (char *)meta_data,
|
||||
(int)meta_data_size, 0) >= 0;
|
||||
bfree(meta_data);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
@ -789,7 +778,7 @@ static int init_send(struct rtmp_stream *stream)
|
|||
{
|
||||
int ret;
|
||||
size_t idx = 0;
|
||||
bool next = true;
|
||||
obs_output_t *context = stream->output;
|
||||
|
||||
#if defined(_WIN32)
|
||||
adjust_sndbuf_size(stream, MIN_SENDBUF_SIZE);
|
||||
|
@ -827,7 +816,6 @@ static int init_send(struct rtmp_stream *stream)
|
|||
bfree(stream->write_buf);
|
||||
|
||||
int total_bitrate = 0;
|
||||
obs_output_t *context = stream->output;
|
||||
|
||||
obs_encoder_t *vencoder = obs_output_get_video_encoder(context);
|
||||
if (vencoder) {
|
||||
|
@ -892,20 +880,25 @@ static int init_send(struct rtmp_stream *stream)
|
|||
}
|
||||
|
||||
os_atomic_set_bool(&stream->active, true);
|
||||
while (next) {
|
||||
bool success =
|
||||
(stream->using_metadata_multitrack && idx != 0)
|
||||
? send_additional_meta_data(stream, idx, &next)
|
||||
: send_meta_data(stream, idx, &next);
|
||||
idx++;
|
||||
|
||||
if (!success) {
|
||||
warn("Disconnected while attempting to connect to "
|
||||
"server.");
|
||||
set_output_error(stream);
|
||||
return OBS_OUTPUT_DISCONNECTED;
|
||||
}
|
||||
if (!send_meta_data(stream)) {
|
||||
warn("Disconnected while attempting to send metadata");
|
||||
set_output_error(stream);
|
||||
return OBS_OUTPUT_DISCONNECTED;
|
||||
}
|
||||
|
||||
obs_encoder_t *aencoder = obs_output_get_audio_encoder(context, 1);
|
||||
if (aencoder && !send_additional_meta_data(stream)) {
|
||||
warn("Disconnected while attempting to send additional "
|
||||
"metadata");
|
||||
return OBS_OUTPUT_DISCONNECTED;
|
||||
}
|
||||
|
||||
if (obs_output_get_audio_encoder(context, 2) != NULL) {
|
||||
warn("Additional audio streams not supported");
|
||||
return OBS_OUTPUT_DISCONNECTED;
|
||||
}
|
||||
|
||||
obs_output_begin_data_capture(stream->output, 0);
|
||||
|
||||
return OBS_OUTPUT_SUCCESS;
|
||||
|
@ -1015,20 +1008,6 @@ static int try_connect(struct rtmp_stream *stream)
|
|||
|
||||
RTMP_AddStream(&stream->rtmp, stream->key.array);
|
||||
|
||||
if (!stream->using_metadata_multitrack) {
|
||||
for (size_t idx = 1;; idx++) {
|
||||
obs_encoder_t *encoder = obs_output_get_audio_encoder(
|
||||
stream->output, idx);
|
||||
const char *encoder_name;
|
||||
|
||||
if (!encoder)
|
||||
break;
|
||||
|
||||
encoder_name = obs_encoder_get_name(encoder);
|
||||
RTMP_AddStream(&stream->rtmp, encoder_name);
|
||||
}
|
||||
}
|
||||
|
||||
stream->rtmp.m_outChunkSize = 4096;
|
||||
stream->rtmp.m_bSendChunkSizeInfo = true;
|
||||
stream->rtmp.m_bUseNagle = true;
|
||||
|
@ -1087,8 +1066,6 @@ static bool init_connect(struct rtmp_stream *stream)
|
|||
drop_p = (int64_t)obs_data_get_int(settings, OPT_PFRAME_DROP_THRESHOLD);
|
||||
stream->max_shutdown_time_sec =
|
||||
(int)obs_data_get_int(settings, OPT_MAX_SHUTDOWN_TIME_SEC);
|
||||
stream->using_metadata_multitrack =
|
||||
obs_data_get_bool(settings, OPT_METADATA_MULTITRACK);
|
||||
|
||||
obs_encoder_t *venc = obs_output_get_video_encoder(stream->output);
|
||||
obs_encoder_t *aenc = obs_output_get_audio_encoder(stream->output, 0);
|
||||
|
@ -1488,7 +1465,6 @@ static void rtmp_stream_defaults(obs_data_t *defaults)
|
|||
obs_data_set_default_string(defaults, OPT_BIND_IP, "default");
|
||||
obs_data_set_default_bool(defaults, OPT_NEWSOCKETLOOP_ENABLED, false);
|
||||
obs_data_set_default_bool(defaults, OPT_LOWLATENCY_ENABLED, false);
|
||||
obs_data_set_default_bool(defaults, OPT_METADATA_MULTITRACK, true);
|
||||
}
|
||||
|
||||
static obs_properties_t *rtmp_stream_properties(void *unused)
|
||||
|
|
|
@ -59,7 +59,6 @@ struct rtmp_stream {
|
|||
pthread_mutex_t packets_mutex;
|
||||
struct circlebuf packets;
|
||||
bool sent_headers;
|
||||
bool using_metadata_multitrack;
|
||||
|
||||
bool got_first_video;
|
||||
int64_t start_dts_offset;
|
||||
|
|
Loading…
Reference in a new issue