[FFmpeg-devel] [PATCH] H264. Check if more RBSP data in PPS provided by current profile due to Annex A.
Michael Niedermayer
michaelni at gmx.at
Fri Nov 25 17:11:48 CET 2011
On Fri, Nov 25, 2011 at 07:20:17PM +0400, Anatoly Nenashev wrote:
> On 25.11.2011 18:44, Michael Niedermayer wrote:
> >On Fri, Nov 25, 2011 at 05:49:44PM +0400, Anatoly Nenashev wrote:
> >>Subj.
> >>
> >>This patch also fix issue https://ffmpeg.org/trac/ffmpeg/ticket/685.
> >>
> >> h264_ps.c | 19 ++++++++++++++++++-
> >> 1 file changed, 18 insertions(+), 1 deletion(-)
> >>705fb675467c14ef8f7ee9777a8cb3f324254bdb h264_profile_check.patch
> >>diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c
> >>index 7a4cfb0..111a6a3 100644
> >>--- a/libavcodec/h264_ps.c
> >>+++ b/libavcodec/h264_ps.c
> >>@@ -485,6 +485,23 @@ build_qp_table(PPS *pps, int t, int index, const int depth)
> >> pps->chroma_qp_table[t][i] = ff_h264_chroma_qp[depth-8][av_clip(i + index, 0, max_qp)];
> >> }
> >>
> >>+static int more_rbsp_data_in_pps(H264Context *h)
> >>+{
> >>+ const SPS *sps =&h->sps;
> >this could be wrong if there are multiple sps, it should use
> >h->sps_buffers[pps->sps_id]
> >
> >
>
> Ok.
>
> >>+ const int profile_idc = sps->profile_idc;
> >>+ const int constraint_set_flags = sps->constraint_set_flags;
> >>+
> >>+ if (profile_idc == 66 || profile_idc == 77 ||
> >>+ profile_idc == 88 || constraint_set_flags& 7)
> >maybe a more minimal check would be safer, that is incase some other
> >encoder sets the profile wrong
> >
> >
>
> There is a note in specification, section 7.4.2.1.1:
>
> "NOTE 1 – When one or more than one of constraint_set0_flag,
> constraint_set1_flag, or constraint_set2_flag are equal to 1, the
> coded video sequence must obey the constraints of all of the
> indicated subclauses of subclause A.2. When profile_idc is equal to
> 44, 100, 110, 122, or 244, the values of constraint_set0_flag,
> constraint_set1_flag, and constraint_set2_flag must all be equal
> to 0."
>
> Thus we may just check that constraint_set_flags & 7 is not 0. See
> new patch in attachment.
applied, thanks
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
No snowflake in an avalanche ever feels responsible. -- Voltaire
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20111125/d51f0906/attachment.asc>
More information about the ffmpeg-devel
mailing list