From 6940a6de2f047ceae414ddebaab30cd9fe35b020 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 6 Aug 2017 20:13:47 +0200 Subject: [PATCH] lavu/frame: add side data storing view ID for multi-view video --- doc/APIchanges | 3 +++ fftools/ffprobe.c | 2 ++ libavfilter/vf_showinfo.c | 2 ++ libavutil/frame.c | 1 + libavutil/frame.h | 9 +++++++++ libavutil/version.h | 2 +- 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index 2273c3bce7..ca44e8ff2b 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,9 @@ The last version increases of all libraries were on 2024-03-07 API changes, most recent first: +2024-09-23 - xxxxxxx - lavu 59.38.100 - frame.h + Add AV_FRAME_DATA_VIEW_ID. + 2024-09-23 - xxxxxxxxxx - lavc 61.18.100 - avcodec.h Add a new flag AV_CODEC_EXPORT_DATA_ENHANCEMENTS for export_side_data. diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c index bf5ebe3ce0..14b98d22a1 100644 --- a/fftools/ffprobe.c +++ b/fftools/ffprobe.c @@ -2920,6 +2920,8 @@ static void print_frame_side_data(WriterContext *w, } else if (sd->type == AV_FRAME_DATA_FILM_GRAIN_PARAMS) { AVFilmGrainParams *fgp = (AVFilmGrainParams *)sd->data; print_film_grain_params(w, fgp); + } else if (sd->type == AV_FRAME_DATA_VIEW_ID) { + print_int("view_id", *(int*)sd->data); } writer_print_section_footer(w); } diff --git a/libavfilter/vf_showinfo.c b/libavfilter/vf_showinfo.c index f81df9d1bf..77082505f5 100644 --- a/libavfilter/vf_showinfo.c +++ b/libavfilter/vf_showinfo.c @@ -857,6 +857,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) case AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT: dump_ambient_viewing_environment(ctx, sd); break; + case AV_FRAME_DATA_VIEW_ID: + av_log(ctx, AV_LOG_INFO, "view id: %d\n", *(int*)sd->data); default: if (name) av_log(ctx, AV_LOG_INFO, diff --git a/libavutil/frame.c b/libavutil/frame.c index 2758f90e27..f0a0dba018 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -47,6 +47,7 @@ static const AVSideDataDescriptor sd_props[] = { [AV_FRAME_DATA_DOVI_RPU_BUFFER] = { "Dolby Vision RPU Data" }, [AV_FRAME_DATA_DOVI_METADATA] = { "Dolby Vision Metadata" }, [AV_FRAME_DATA_LCEVC] = { "LCEVC NAL data" }, + [AV_FRAME_DATA_VIEW_ID] = { "View ID" }, [AV_FRAME_DATA_STEREO3D] = { "Stereo 3D", AV_SIDE_DATA_PROP_GLOBAL }, [AV_FRAME_DATA_REPLAYGAIN] = { "AVReplayGain", AV_SIDE_DATA_PROP_GLOBAL }, [AV_FRAME_DATA_DISPLAYMATRIX] = { "3x3 displaymatrix", AV_SIDE_DATA_PROP_GLOBAL }, diff --git a/libavutil/frame.h b/libavutil/frame.h index 5e0d8ae648..f7806566d5 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -234,6 +234,15 @@ enum AVFrameSideDataType { * bytes intact. */ AV_FRAME_DATA_LCEVC, + + /** + * This side data must be associated with a video frame. + * The presence of this side data indicates that the video stream is + * composed of multiple views (e.g. stereoscopic 3D content, + * cf. H.264 Annex H or H.265 Annex G). + * The data is an int storing the view ID. + */ + AV_FRAME_DATA_VIEW_ID, }; enum AVActiveFormatDescription { diff --git a/libavutil/version.h b/libavutil/version.h index 7900379c12..9afbcafd14 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 59 -#define LIBAVUTIL_VERSION_MINOR 37 +#define LIBAVUTIL_VERSION_MINOR 38 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \