[FFmpeg-devel] [PATCH] H264 DXVA2 implementation

Michael Niedermayer michaelni
Tue Jan 12 01:56:22 CET 2010


On Sun, Jan 10, 2010 at 10:05:05PM +0100, Laurent Aimar wrote:
> On Sun, Jan 10, 2010, Reimar D?ffinger wrote:
> > On Sun, Jan 10, 2010 at 08:48:46PM +0100, Laurent Aimar wrote:
> > > Hi,
> > > 
> > > On Sun, Jan 10, 2010, Reimar D?ffinger wrote:
> > > > Which of course means the requirements for FFmpeg change from "requires a C99 compatible compiler" to
> > > > "requires a compiler compatible to some bastardized mix of C99 and whatever Microsoft calls C", not to
> > > > mention that you'd probably also need -mms-bitfields.
> > > > And with all that compiler checks to make sure we don't mess up too much if any of these are not available.
> > > 
> > >  I can also send a patch that only use the field bPicEntry and then remove the
> > > nameless struct/union in the header (it won't be complete anymore but still
> > > usable).
> > 
> > _I_ think that would be a good solution, adding the appropriate compiler flags
> > would be possible, too, but it certainly will be more than one line in configure
> > (at least: Makefile so it is only used for that file, configure: only check
> > if the flag is available, don't add it to cflags, fail or disable dxva if it
> > is not supported).
> 
> Attached is a diff against dxva2_h264.c to avoid using bitfields in dxva2api.h.
> (If oked, I will send a complete patch once I have validated the changes).
> 
> -- 
> fenrir
> 

>  dxva2_h264.c |   58 ++++++++++++++++++++++++++++++++++++----------------------
>  1 file changed, 36 insertions(+), 22 deletions(-)
> e478d25e97f7128a0d3acc108117885ef7020176  ffmpeg-dxva2-nobitfields.patch
> diff --git a/libavcodec/dxva2_h264.c b/libavcodec/dxva2_h264.c
> index fa2a3e7..af1a998 100644
> --- a/libavcodec/dxva2_h264.c
> +++ b/libavcodec/dxva2_h264.c
> @@ -55,6 +55,13 @@ static unsigned get_surface_index(const struct dxva_context *ctx,
>      return 0;
>  }
>  
> +static void fill_picture_entry(DXVA_PicEntry_H264 *pic,
> +                               unsigned index, unsigned flag)
> +{
> +    assert((index&0x7f) == index && (flag&0x01) == flag);

assert(index<=0x7f && flag<=1);

this patch is otherwise ok
ill review the whole when you repost it

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

It is dangerous to be right in matters on which the established authorities
are wrong. -- Voltaire
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100112/71c60016/attachment.pgp>



More information about the ffmpeg-devel mailing list