2017-06-13 19:02 GMT+08:00 wm4 <nfx...@googlemail.com>: > On Tue, 13 Jun 2017 11:17:35 +0100 > Mark Thompson <s...@jkqxz.net> wrote: > >> > +vp8_rkmpp_hwaccel_deps="rkmpp" >> > vp9_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_VP9" >> > vp9_d3d11va_hwaccel_select="vp9_decoder" >> > vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9" >> >> Why do these hwaccels exist? They don't appear to do anything, since you >> only have hardware surface output anyway. > > Well I guess you might have a point - as long as get_format isn't > actually involved, they're technically not needed. And we've apparently > always had hw decoders which can output both sw and hw surfaces, so > this never came up (probably). > > > I still think there's no harm in adding them. > >> > ... >> > diff --git a/libavcodec/drmprime.h b/libavcodec/drmprime.h >> > new file mode 100644 >> > index 0000000..44816db >> > --- /dev/null >> > +++ b/libavcodec/drmprime.h >> > @@ -0,0 +1,17 @@ >> > +#ifndef AVCODEC_DRMPRIME_H >> > +#define AVCODEC_DRMPRIME_H >> > + >> > +#include <stdint.h> >> > + >> > +#define AV_DRMPRIME_NUM_PLANES 4 // maximum number of planes >> > + >> > +typedef struct av_drmprime { >> > + >> > + int strides[AV_DRMPRIME_NUM_PLANES]; // stride in byte of the >> > according plane >> > + int offsets[AV_DRMPRIME_NUM_PLANES]; // offset from start in byte >> > of the according plane >> > + int fds[AV_DRMPRIME_NUM_PLANES]; // file descriptor for the >> > plane, (0) if unused. >> > + uint32_t format; // FOURC_CC drm format for >> > the image >> > + >> > +} av_drmprime; >> > + >> > +#endif // AVCODEC_DRMPRIME_H >> >> I'm not sure that a structure like this should be baked into the API/ABI now >> as a generic thing. Are you confident that it is sufficient to represent >> any picture in a DRM object which might be used in future? (Including >> things like tiling modes, field splitting, other craziness that GPU makers >> dream up?) > > This includes the DRM FourCC, which should take most craziness into > account. The RockChip decoder itself does something pretty crazy (10 > bit _packed_ _planar_ format, wtf?), and it sort of fits in. > > I had similar concerns, and I think I basically requested that all > standard eglCreateImageKHR() parameters for this to be included in this > struct (which was done). > > It's true though that drivers could invent additional craziness as > additional EGL attributes, or by adding new DRM API calls. > > It boils down to how the DRM kernel API handles these things, which I > don't know. (Not like kernel devs would write docs - they'd possibly be > forced to create something consistent!) > > Longchair replied with the EGL mapping as use case, but you can also > map it as DRM framebuffer, which appears to happen around here: > > https://github.com/LongChair/mpv/blob/rockchip/video/out/opengl/hwdec_drmprime_drm.c#L102 > >> Can you explain the cases you are using this in? Are you intending to make >> other components with input / output in this format? >> >> With just this decoder in isolation, it would seem preferable to me to make >> a structure specific to the API for now (or use the existing one - is >> MppFrame sufficient?). If later there are multiple implementations and need >> for a common structure like this then it will be clearer what the >> requirements are. Compare VAAPI and QSV (possibly also CUDA, CUVID, VDPAU?) >> - they can expose DRM objects, but don't currently in the ffmpeg API because >> any consumers which want them in that form generally prefer the wrapping >> object including the relevant metadata anyway. > > So output those as MppFrames, and then map them as DRM frames? We'd > have the same issues. Also, the API would be harder to use. The > assumption is that native MppFrames are pretty useless anyway, other > than for using them with the MPP decode API. > >> Also, zero is a valid file descriptor. > > Technically yes, not sure if we care about that case. > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Hello? What about this support? This is a very interesting function :D _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel