From: James Almer <jamrial@gmail.com> To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] avutil/frame: use bitfields for some boolean and enum fields Date: Mon, 17 Apr 2023 11:39:30 -0300 Message-ID: <20230417143930.1186-1-jamrial@gmail.com> (raw) Should reduce the size of AVFrame in the next major bump without changing the API. Suggested-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: James Almer <jamrial@gmail.com> --- This supersedes "avutil/frame: add new interlaced and top_field_first flags" and "avutil/frame: add a keyframe flag to AVFrame". libavutil/frame.h | 56 +++++++++++++++++++++++++++++++++++++++++++++ libavutil/version.h | 1 + 2 files changed, 57 insertions(+) diff --git a/libavutil/frame.h b/libavutil/frame.h index f85d630c5c..c26067f383 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -416,6 +416,7 @@ typedef struct AVFrame { */ int format; +#if FF_API_BITFIELDS /** * 1 -> keyframe, 0-> not */ @@ -425,6 +426,57 @@ typedef struct AVFrame { * Picture type of the frame. */ enum AVPictureType pict_type; +#else + /** + * 1 -> keyframe, 0-> not + */ + unsigned int key_frame: 1; + + /** + * The content of the picture is interlaced. + */ + unsigned int interlaced_frame: 1; + + /** + * If the content is interlaced, is top field displayed first. + */ + unsigned int top_field_first: 1; + + /** + * Tell user application that palette has changed from previous frame. + */ + unsigned int palette_has_changed: 1; + + /** + * Reserved. Must not be touched. + */ + unsigned int reserved_bitfield: (sizeof(unsigned int) * 8) - 9; + + /** + * MPEG vs JPEG YUV range. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorRange color_range: 2; + + enum AVChromaLocation chroma_location: 3; + + /** + * Picture type of the frame. + */ + enum AVPictureType pict_type: 8; + + enum AVColorPrimaries color_primaries: 8; + + enum AVColorTransferCharacteristic color_trc: 8; + + /** + * YUV colorspace type. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorSpace colorspace: 8; +#endif /** * Sample aspect ratio for the video frame, 0/1 if unknown/unspecified. @@ -491,6 +543,7 @@ typedef struct AVFrame { */ int repeat_pict; +#if FF_API_BITFIELDS /** * The content of the picture is interlaced. */ @@ -505,6 +558,7 @@ typedef struct AVFrame { * Tell user application that palette has changed from previous frame. */ int palette_has_changed; +#endif #if FF_API_REORDERED_OPAQUE /** @@ -595,6 +649,7 @@ typedef struct AVFrame { */ int flags; +#if FF_API_BITFIELDS /** * MPEG vs JPEG YUV range. * - encoding: Set by user @@ -614,6 +669,7 @@ typedef struct AVFrame { enum AVColorSpace colorspace; enum AVChromaLocation chroma_location; +#endif /** * frame timestamp estimated using various heuristics, in stream time base diff --git a/libavutil/version.h b/libavutil/version.h index 40f92af055..23cad31b46 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -115,6 +115,7 @@ #define FF_API_FRAME_PICTURE_NUMBER (LIBAVUTIL_VERSION_MAJOR < 59) #define FF_API_HDR_VIVID_THREE_SPLINE (LIBAVUTIL_VERSION_MAJOR < 59) #define FF_API_FRAME_PKT (LIBAVUTIL_VERSION_MAJOR < 59) +#define FF_API_BITFIELDS (LIBAVUTIL_VERSION_MAJOR < 59) /** * @} -- 2.40.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next reply other threads:[~2023-04-17 14:40 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-04-17 14:39 James Almer [this message] 2023-04-17 15:00 ` Lynne 2023-04-17 15:15 ` James Almer 2023-04-17 17:25 ` Lynne 2023-04-17 17:27 ` James Almer 2023-04-19 15:06 ` Lynne 2023-04-17 17:19 ` Anton Khirnov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230417143930.1186-1-jamrial@gmail.com \ --to=jamrial@gmail.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git