On Sun, 4 May 2014 01:52:35 +1000 Jean-Yves Avenard <[email protected]> wrote:
> Hi > > On 4 May 2014 00:21, wm4 <[email protected]> wrote: > > > There is no h264_vdpau codec anymore (except maybe the old legacy > > implementation that was removed from Libav, but not FFmpeg yet). > > Instead, you're supposed to use the hwaccel feature. > > Great ! > > I've spent hours attempting to change that, because I was concerned I > wasn't doing it the proper way :) > > > > > This is the defacto-documentation how to use it: > > > > https://git.videolan.org/?p=ffmpeg.git;a=blob;f=ffmpeg_vdpau.c > > seriously? that's the "documentation" :) Since the interaction is pretty complicated, and the code is relatively clear, this state isn't that bad. It's better than it was before there was no example code at all. > > > > The trick is that you open the normal h264 codec, but select a vdpau > > pixelformat when the get_format callback is used. > > Originally, I was returning (as part of the old code legacy), the > pixelformat directly related to the codec: > e.g: returning AV_PIX_FMT_VDPAU_H264. But this cause h264 playback to fail. > so I now always return AV_PIX_FMT_VDPAU in my get_format. AV_PIX_FMT_VDPAU is what you use with the new API. The codec specific ones are for the old API and won't work with the new API. > Interestingly, when I do like what everyone else appear to be doing, like: > while(*cur != PIX_FMT_NONE) > { > if (*cur == AV_PIX_FMT_VDPAU) > return *cur; > cur++; > } > return avcodec_default_get_format(avctx, fmt); > > for WMP3, the PixelFormat received is AV_PIX_FMT_VDPAU_WMP3, but > there's no AV_PIX_FMT_VDPAU in the list that follows. Wrong order in > the pixel format is my guess. > > (this is what XBMC essentially does) Sounds like you're still using the old decoder? > > > > I don't know what they're doing currently, but they still could be > > using the "old" API, or emulating it. > > hmmm... looking at it, they are definitely using the new API.. > > > > Well, there's nothing magic about the "new" API, it's just the old one > > slightly changed. I still have no idea why it was changed at all. > > there must be something different. Well yes, some things are different. You also have to provide a vdpau context struct, and you don't override the avcodec slice callback. > I have a few mpeg2 video that do not play with the old API, but do now. > like the one reported here: > https://code.mythtv.org/trac/ticket/11377 Well, the old API was "restored" after it was removed (because Libav removed it, but then a MPlayer developer readded it to FFmpeg - or actually, I'm not sure what exactly happened), so maybe there's a potential for bugs. But AFAIK MPlayer devs actually fixed a few bugs in the _new_ API so that it works as good as the old one. > thanks again for you help... much appreciated > _______________________________________________ > Libav-user mailing list > [email protected] > http://ffmpeg.org/mailman/listinfo/libav-user _______________________________________________ Libav-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/libav-user
