On 1/22/2025 12:13 AM, Lynne wrote:


On 22/01/2025 11:53, James Almer wrote:
Equivalent to the one from packet side data using AVSideDataParamChangeFlags,
and will be used for the same purpose with encoders.

Signed-off-by: James Almer <jamr...@gmail.com>
---
  libavutil/frame.c |  1 +
  libavutil/frame.h | 13 +++++++++++++
  2 files changed, 14 insertions(+)

diff --git a/libavutil/frame.c b/libavutil/frame.c
index 10b59545f0..f3575afc31 100644
--- a/libavutil/frame.c
+++ b/libavutil/frame.c
@@ -48,6 +48,7 @@ static const AVSideDataDescriptor sd_props[] = {
      [AV_FRAME_DATA_DOVI_METADATA]               = { "Dolby Vision Metadata",                        AV_SIDE_DATA_PROP_COLOR_DEPENDENT },       [AV_FRAME_DATA_LCEVC]                       = { "LCEVC NAL data",                               AV_SIDE_DATA_PROP_SIZE_DEPENDENT },
      [AV_FRAME_DATA_VIEW_ID]                     = { "View ID" },
+    [AV_FRAME_DATA_PARAM_CHANGE]                = { "Param Change" },
      [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 628f2b5b3a..de7a8e9eab 100644
--- a/libavutil/frame.h
+++ b/libavutil/frame.h
@@ -243,6 +243,19 @@ enum AVFrameSideDataType {
       * The data is an int storing the view ID.
       */
      AV_FRAME_DATA_VIEW_ID,
+
+    /**
+     * An AV_FRAME_DATA_PARAM_CHANGE side data packet is laid out as follows:
+     * @code
+     * u32le param_flags
+     * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE)
+     *     s32le sample_rate
+     * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS)
+     *     s32le width
+     *     s32le height
+     * @endcode
+     */
+    AV_FRAME_DATA_PARAM_CHANGE,

Could you make the struct defined, and allocated by libavutil, like with encode data and film grain?
That way new fields could be added in the future.

New fields can be added this way too. The reason i didn't make it a struct is that i wanted to introduce the least amount of new public defines/symbols, thus reusing the packet side data implementation.


I'd also like for the FPS and timebase to be signaled. Encoders can sometimes handle them gracefully, as its just a rate control parameter change.

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to