Browse Source

lavf: add use_wallclock_as_timestamps

This may fix Ticket730

Reviewed-by: Nicolas George <nicolas.george@normalesup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n1.0
Michael Niedermayer 13 years ago
parent
commit
28ff17fa97
3 changed files with 12 additions and 0 deletions
  1. +8
    -0
      libavformat/avformat.h
  2. +1
    -0
      libavformat/options_table.h
  3. +3
    -0
      libavformat/utils.c

+ 8
- 0
libavformat/avformat.h View File

@@ -1100,6 +1100,14 @@ typedef struct AVFormatContext {
*/
int max_chunk_size;

/**
* forces the use of wallclock timestamps as pts/dts of packets
* This has undefined results in the presence of B frames.
* - encoding: unused
* - decoding: Set by user via AVOptions (NO direct access)
*/
int use_wallclock_as_timestamps;

/*****************************************************************
* All fields below this line are not part of the public API. They
* may not be used outside of libavformat and can be changed and


+ 1
- 0
libavformat/options_table.h View File

@@ -70,6 +70,7 @@ static const AVOption options[]={
{"careful", "consider things that violate the spec and have not been seen in the wild as errors", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_CAREFUL }, INT_MIN, INT_MAX, D, "err_detect"},
{"compliant", "consider all spec non compliancies as errors", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_COMPLIANT }, INT_MIN, INT_MAX, D, "err_detect"},
{"aggressive", "consider things that a sane encoder shouldnt do as an error", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_AGGRESSIVE }, INT_MIN, INT_MAX, D, "err_detect"},
{"use_wallclock_as_timestamps", "use wallclock as timestamps", OFFSET(use_wallclock_as_timestamps), AV_OPT_TYPE_INT, {.dbl = 0}, 0, INT_MAX-1, D},
{NULL},
};



+ 3
- 0
libavformat/utils.c View File

@@ -776,6 +776,9 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt)
if(s->subtitle_codec_id)st->codec->codec_id= s->subtitle_codec_id;
break;
}
/* TODO: audio: time filter; video: frame reordering (pts != dts) */
if (s->use_wallclock_as_timestamps)
pkt->dts = pkt->pts = av_rescale_q(av_gettime(), AV_TIME_BASE_Q, st->time_base);

if(!pktl && st->request_probe <= 0)
return ret;


Loading…
Cancel
Save