[FFmpeg-devel] [PATCH 15/17] avformat/avc: Use the constraint_setx_flags as is
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Thu Jul 9 22:20:20 EEST 2020
and also keep the reserved_zero_2bits in the corresponding H264SPS member.
This simplifies parsing and will prove beneficial in ff_isom_write_avcc.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
---
libavformat/avc.c | 8 +-------
libavformat/avc.h | 2 +-
libavformat/mxfenc.c | 2 +-
3 files changed, 3 insertions(+), 9 deletions(-)
diff --git a/libavformat/avc.c b/libavformat/avc.c
index 6246410ad0..c106fe5792 100644
--- a/libavformat/avc.c
+++ b/libavformat/avc.c
@@ -410,13 +410,7 @@ int ff_avc_decode_sps(H264SPS *sps, const uint8_t *buf, int buf_size)
memset(sps, 0, sizeof(*sps));
sps->profile_idc = get_bits(&gb, 8);
- sps->constraint_set_flags |= get_bits1(&gb) << 0; // constraint_set0_flag
- sps->constraint_set_flags |= get_bits1(&gb) << 1; // constraint_set1_flag
- sps->constraint_set_flags |= get_bits1(&gb) << 2; // constraint_set2_flag
- sps->constraint_set_flags |= get_bits1(&gb) << 3; // constraint_set3_flag
- sps->constraint_set_flags |= get_bits1(&gb) << 4; // constraint_set4_flag
- sps->constraint_set_flags |= get_bits1(&gb) << 5; // constraint_set5_flag
- skip_bits(&gb, 2); // reserved_zero_2bits
+ sps->constraint_set_flags = get_bits(&gb, 8);
sps->level_idc = get_bits(&gb, 8);
GET_UE_GOLOMB(sps->id, H264_MAX_SPS_COUNT - 1);
diff --git a/libavformat/avc.h b/libavformat/avc.h
index db1d3334dd..2c7004a5ef 100644
--- a/libavformat/avc.h
+++ b/libavformat/avc.h
@@ -42,7 +42,7 @@ typedef struct {
uint8_t id;
uint8_t profile_idc;
uint8_t level_idc;
- uint8_t constraint_set_flags;
+ uint8_t constraint_set_flags; /* Also contains the reserved_zero_*bits. */
uint8_t chroma_format_idc;
uint8_t bit_depth_luma_minus8;
uint8_t bit_depth_chroma_minus8;
diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
index 5eeeb9ab84..5168b17a2c 100644
--- a/libavformat/mxfenc.c
+++ b/libavformat/mxfenc.c
@@ -2204,7 +2204,7 @@ static int mxf_parse_h264_frame(AVFormatContext *s, AVStream *st,
sc->aspect_ratio.den = st->codecpar->height * sps->sar.den;
av_reduce(&sc->aspect_ratio.num, &sc->aspect_ratio.den,
sc->aspect_ratio.num, sc->aspect_ratio.den, 1024*1024);
- intra_only = (sps->constraint_set_flags >> 3) & 1;
+ intra_only = (sps->constraint_set_flags >> 4) & 1;
sc->interlaced = !sps->frame_mbs_only_flag;
sc->component_depth = sps->bit_depth_luma_minus8 + 8;
--
2.20.1
More information about the ffmpeg-devel
mailing list