Browse Source

lavf: add an API to get output timestamps.

tags/n0.9
Nicolas George 14 years ago
parent
commit
b442ca69d9
2 changed files with 30 additions and 0 deletions
  1. +21
    -0
      libavformat/avformat.h
  2. +9
    -0
      libavformat/utils.c

+ 21
- 0
libavformat/avformat.h View File

@@ -316,6 +316,9 @@ typedef struct AVOutputFormat {

const AVClass *priv_class; ///< AVClass for the private context

void (*get_output_timestamp)(struct AVFormatContext *s, int stream,
int64_t *dts, int64_t *wall);

/* private fields */
struct AVOutputFormat *next;
} AVOutputFormat;
@@ -1518,6 +1521,24 @@ int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out,
*/
int av_write_trailer(AVFormatContext *s);

/**
* Get timing information for the data currently output.
* The exact meaning of "currently output" depends on the format.
* It is mostly relevant for devices that have an internal buffer and/or
* work in real time.
* @param s media file handle
* @param stream stream in the media file
* @param dts[out] DTS of the last packet output for the stream, in stream
* time_base units
* @param wall[out] absolute time when that packet whas output,
* in microsecond
* @return 0 if OK, AVERROR(ENOSYS) if the format does not support it
* Note: some formats or devices may not allow to measure dts and wall
* atomically.
*/
int av_get_output_timestamp(struct AVFormatContext *s, int stream,
int64_t *dts, int64_t *wall);

#if FF_API_DUMP_FORMAT
/**
* @deprecated Deprecated in favor of av_dump_format().


+ 9
- 0
libavformat/utils.c View File

@@ -3285,6 +3285,15 @@ fail:
return ret;
}

int av_get_output_timestamp(struct AVFormatContext *s, int stream,
int64_t *dts, int64_t *wall)
{
if (!s->oformat || !s->oformat->get_output_timestamp)
return AVERROR(ENOSYS);
s->oformat->get_output_timestamp(s, stream, dts, wall);
return 0;
}

void ff_program_add_stream_index(AVFormatContext *ac, int progid, unsigned int idx)
{
int i, j;


Loading…
Cancel
Save