diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-12-01 02:44:19 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-12-01 02:54:24 +0100 |
commit | 9d76cf0b18976487d71e39bbdc1b53755e366535 (patch) | |
tree | d71801d63301c89e4c860eb2dee38b47348cd5b7 /avconv.c | |
parent | 0275b75a7e705ef5a6bd6610f1450671f78000b6 (diff) | |
parent | c8f0e88b205208da0e74f9345d4c4eb6d725774b (diff) | |
download | ffmpeg-9d76cf0b18976487d71e39bbdc1b53755e366535.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
rtpdec: Templatize the code for different g726 bitrate variants
rv40: move loop filter to rv34dsp context
lavf: make av_set_pts_info private.
rtpdec: Add support for G726 audio
rtpdec: Add an init function that can do custom codec context initialization
avconv: make copy_tb on by default.
matroskadec: don't set codec timebase.
rmdec: don't set codec timebase.
avconv: compute next_pts from input packet duration when possible.
lavf: estimate frame duration from r_frame_rate.
avconv: update InputStream.pts in the streamcopy case.
Conflicts:
avconv.c
libavdevice/alsa-audio-dec.c
libavdevice/bktr.c
libavdevice/fbdev.c
libavdevice/libdc1394.c
libavdevice/oss_audio.c
libavdevice/v4l.c
libavdevice/v4l2.c
libavdevice/vfwcap.c
libavdevice/x11grab.c
libavformat/au.c
libavformat/eacdata.c
libavformat/flvdec.c
libavformat/mpegts.c
libavformat/mxfenc.c
libavformat/rtpdec_g726.c
libavformat/wtv.c
libavformat/xmv.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'avconv.c')
-rw-r--r-- | avconv.c | 35 |
1 files changed, 14 insertions, 21 deletions
@@ -129,7 +129,7 @@ static int video_sync_method= -1; static int audio_sync_method= 0; static float audio_drift_threshold= 0.1; static int copy_ts= 0; -static int copy_tb= 0; +static int copy_tb = 1; static int opt_shortest = 0; static char *vstats_filename; static FILE *vstats_file; @@ -1823,7 +1823,9 @@ static int transcode_video(InputStream *ist, AVPacket *pkt, int *got_output, int return ret; } ist->next_pts = ist->pts = decoded_frame->best_effort_timestamp; - if (ist->st->codec->time_base.num != 0) { + if (pkt->duration) + ist->next_pts += av_rescale_q(pkt->duration, ist->st->time_base, AV_TIME_BASE_Q); + else if (ist->st->codec->time_base.num != 0) { int ticks = ist->st->parser ? ist->st->parser->repeat_pict + 1 : ist->st->codec->ticks_per_frame; ist->next_pts += ((int64_t)AV_TIME_BASE * @@ -1986,6 +1988,7 @@ static int output_packet(InputStream *ist, /* handle stream copy */ if (!ist->decoding_needed) { rate_emu_sleep(ist); + ist->pts = ist->next_pts; switch (ist->st->codec->codec_type) { case AVMEDIA_TYPE_AUDIO: ist->next_pts += ((int64_t)AV_TIME_BASE * ist->st->codec->frame_size) / @@ -2132,25 +2135,15 @@ static int transcode_init(OutputFile *output_files, return AVERROR(ENOMEM); } memcpy(codec->extradata, icodec->extradata, icodec->extradata_size); - codec->extradata_size= icodec->extradata_size; - - codec->time_base = ist->st->time_base; - if(!strcmp(oc->oformat->name, "avi")) { - if (!copy_tb && - av_q2d(icodec->time_base)*icodec->ticks_per_frame > 2*av_q2d(ist->st->time_base) && - av_q2d(ist->st->time_base) < 1.0/500){ - codec->time_base = icodec->time_base; - codec->time_base.num *= icodec->ticks_per_frame; - codec->time_base.den *= 2; - } - } else if(!(oc->oformat->flags & AVFMT_VARIABLE_FPS)) { - if(!copy_tb && av_q2d(icodec->time_base)*icodec->ticks_per_frame > av_q2d(ist->st->time_base) && av_q2d(ist->st->time_base) < 1.0/500){ - codec->time_base = icodec->time_base; - codec->time_base.num *= icodec->ticks_per_frame; - } - } - av_reduce(&codec->time_base.num, &codec->time_base.den, - codec->time_base.num, codec->time_base.den, INT_MAX); + + codec->extradata_size = icodec->extradata_size; + if (!copy_tb) { + codec->time_base = icodec->time_base; + codec->time_base.num *= icodec->ticks_per_frame; + av_reduce(&codec->time_base.num, &codec->time_base.den, + codec->time_base.num, codec->time_base.den, INT_MAX); + } else + codec->time_base = ist->st->time_base; switch(codec->codec_type) { case AVMEDIA_TYPE_AUDIO: |