mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-04-01 22:49:21 +00:00
avformat/mpegts: tag video streams with still images
Parses the video_stream_descriptor (H.222 2.6.2) to look for the still_picture_flag. This is exposed to the user via a new AV_DISPOSITION_STILL_IMAGE. See for example https://tmm1.s3.amazonaws.com/music-choice.ts, whose video stream only updates every ~6 seconds. Signed-off-by: Aman Gupta <aman@tmm1.net> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
2734f8d63a
commit
5dfeb7f081
@ -15,6 +15,9 @@ libavutil: 2017-10-21
|
|||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2018-05-xx - xxxxxxxxxx - lavf 58.14.100 - avformat.h
|
||||||
|
Add AV_DISPOSITION_STILL_IMAGE
|
||||||
|
|
||||||
2018-05-xx - xxxxxxxxxx - lavu 56.18.101 - hwcontext_cuda.h
|
2018-05-xx - xxxxxxxxxx - lavu 56.18.101 - hwcontext_cuda.h
|
||||||
Add AVCUDADeviceContext.stream.
|
Add AVCUDADeviceContext.stream.
|
||||||
|
|
||||||
|
@ -846,6 +846,7 @@ typedef struct AVStreamInternal AVStreamInternal;
|
|||||||
#define AV_DISPOSITION_DESCRIPTIONS 0x20000
|
#define AV_DISPOSITION_DESCRIPTIONS 0x20000
|
||||||
#define AV_DISPOSITION_METADATA 0x40000
|
#define AV_DISPOSITION_METADATA 0x40000
|
||||||
#define AV_DISPOSITION_DEPENDENT 0x80000 ///< dependent audio stream (mix_type=0 in mpegts)
|
#define AV_DISPOSITION_DEPENDENT 0x80000 ///< dependent audio stream (mix_type=0 in mpegts)
|
||||||
|
#define AV_DISPOSITION_STILL_IMAGE 0x100000 ///< still images in video stream (still_picture_flag=1 in mpegts)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Options for behavior on timestamp wrap detection.
|
* Options for behavior on timestamp wrap detection.
|
||||||
|
@ -551,6 +551,8 @@ static void dump_stream_format(AVFormatContext *ic, int i,
|
|||||||
av_log(NULL, AV_LOG_INFO, " (descriptions)");
|
av_log(NULL, AV_LOG_INFO, " (descriptions)");
|
||||||
if (st->disposition & AV_DISPOSITION_DEPENDENT)
|
if (st->disposition & AV_DISPOSITION_DEPENDENT)
|
||||||
av_log(NULL, AV_LOG_INFO, " (dependent)");
|
av_log(NULL, AV_LOG_INFO, " (dependent)");
|
||||||
|
if (st->disposition & AV_DISPOSITION_STILL_IMAGE)
|
||||||
|
av_log(NULL, AV_LOG_INFO, " (still image)");
|
||||||
av_log(NULL, AV_LOG_INFO, "\n");
|
av_log(NULL, AV_LOG_INFO, "\n");
|
||||||
|
|
||||||
dump_metadata(NULL, st->metadata, " ");
|
dump_metadata(NULL, st->metadata, " ");
|
||||||
|
@ -1683,6 +1683,11 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type
|
|||||||
mpegts_find_stream_type(st, desc_tag, DESC_types);
|
mpegts_find_stream_type(st, desc_tag, DESC_types);
|
||||||
|
|
||||||
switch (desc_tag) {
|
switch (desc_tag) {
|
||||||
|
case 0x02: /* video stream descriptor */
|
||||||
|
if (get8(pp, desc_end) & 0x1) {
|
||||||
|
st->disposition |= AV_DISPOSITION_STILL_IMAGE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 0x1E: /* SL descriptor */
|
case 0x1E: /* SL descriptor */
|
||||||
desc_es_id = get16(pp, desc_end);
|
desc_es_id = get16(pp, desc_end);
|
||||||
if (desc_es_id < 0)
|
if (desc_es_id < 0)
|
||||||
|
@ -32,8 +32,8 @@
|
|||||||
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
|
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
|
||||||
// Also please add any ticket numbers that you believe might be affected here
|
// Also please add any ticket numbers that you believe might be affected here
|
||||||
#define LIBAVFORMAT_VERSION_MAJOR 58
|
#define LIBAVFORMAT_VERSION_MAJOR 58
|
||||||
#define LIBAVFORMAT_VERSION_MINOR 13
|
#define LIBAVFORMAT_VERSION_MINOR 14
|
||||||
#define LIBAVFORMAT_VERSION_MICRO 102
|
#define LIBAVFORMAT_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||||
LIBAVFORMAT_VERSION_MINOR, \
|
LIBAVFORMAT_VERSION_MINOR, \
|
||||||
|
Loading…
Reference in New Issue
Block a user