|
|
@@ -588,7 +588,7 @@ static void close_all_output_streams(OutputStream *ost, OSTFinished this_stream, |
|
|
static void write_frame(AVFormatContext *s, AVPacket *pkt, OutputStream *ost) |
|
|
static void write_frame(AVFormatContext *s, AVPacket *pkt, OutputStream *ost) |
|
|
{ |
|
|
{ |
|
|
AVBitStreamFilterContext *bsfc = ost->bitstream_filters; |
|
|
AVBitStreamFilterContext *bsfc = ost->bitstream_filters; |
|
|
AVCodecContext *avctx = ost->st->codec; |
|
|
|
|
|
|
|
|
AVCodecContext *avctx = ost->encoding_needed ? ost->enc_ctx : ost->st->codec; |
|
|
int ret; |
|
|
int ret; |
|
|
|
|
|
|
|
|
if (!ost->st->codec->extradata_size && ost->enc_ctx->extradata_size) { |
|
|
if (!ost->st->codec->extradata_size && ost->enc_ctx->extradata_size) { |
|
|
@@ -2637,7 +2637,7 @@ static int transcode_init(void) |
|
|
if (ost->attachment_filename) |
|
|
if (ost->attachment_filename) |
|
|
continue; |
|
|
continue; |
|
|
|
|
|
|
|
|
enc_ctx = ost->enc_ctx; |
|
|
|
|
|
|
|
|
enc_ctx = ost->stream_copy ? ost->st->codec : ost->enc_ctx; |
|
|
|
|
|
|
|
|
if (ist) { |
|
|
if (ist) { |
|
|
dec_ctx = ist->dec_ctx; |
|
|
dec_ctx = ist->dec_ctx; |
|
|
@@ -3063,6 +3063,17 @@ static int transcode_init(void) |
|
|
if (ost->enc_ctx->bit_rate && ost->enc_ctx->bit_rate < 1000) |
|
|
if (ost->enc_ctx->bit_rate && ost->enc_ctx->bit_rate < 1000) |
|
|
av_log(NULL, AV_LOG_WARNING, "The bitrate parameter is set too low." |
|
|
av_log(NULL, AV_LOG_WARNING, "The bitrate parameter is set too low." |
|
|
" It takes bits/s as argument, not kbits/s\n"); |
|
|
" It takes bits/s as argument, not kbits/s\n"); |
|
|
|
|
|
|
|
|
|
|
|
ret = avcodec_copy_context(ost->st->codec, ost->enc_ctx); |
|
|
|
|
|
if (ret < 0) { |
|
|
|
|
|
av_log(NULL, AV_LOG_FATAL, |
|
|
|
|
|
"Error initializing the output stream codec context.\n"); |
|
|
|
|
|
exit_program(1); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// copy timebase while removing common factors |
|
|
|
|
|
ost->st->time_base = av_add_q(ost->enc_ctx->time_base, (AVRational){0, 1}); |
|
|
|
|
|
ost->st->codec->codec= ost->enc_ctx->codec; |
|
|
} else { |
|
|
} else { |
|
|
ret = av_opt_set_dict(ost->enc_ctx, &ost->encoder_opts); |
|
|
ret = av_opt_set_dict(ost->enc_ctx, &ost->encoder_opts); |
|
|
if (ret < 0) { |
|
|
if (ret < 0) { |
|
|
@@ -3070,18 +3081,9 @@ static int transcode_init(void) |
|
|
"Error setting up codec context options.\n"); |
|
|
"Error setting up codec context options.\n"); |
|
|
return ret; |
|
|
return ret; |
|
|
} |
|
|
} |
|
|
|
|
|
// copy timebase while removing common factors |
|
|
|
|
|
ost->st->time_base = av_add_q(ost->st->codec->time_base, (AVRational){0, 1}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
ret = avcodec_copy_context(ost->st->codec, ost->enc_ctx); |
|
|
|
|
|
if (ret < 0) { |
|
|
|
|
|
av_log(NULL, AV_LOG_FATAL, |
|
|
|
|
|
"Error initializing the output stream codec context.\n"); |
|
|
|
|
|
exit_program(1); |
|
|
|
|
|
} |
|
|
|
|
|
ost->st->codec->codec= ost->enc_ctx->codec; |
|
|
|
|
|
|
|
|
|
|
|
// copy timebase while removing common factors |
|
|
|
|
|
ost->st->time_base = av_add_q(ost->enc_ctx->time_base, (AVRational){0, 1}); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/* init input streams */ |
|
|
/* init input streams */ |
|
|
|