[FFmpeg-devel] [PATCH 25/25] hwcontext_drm: do not require drm device

Aman Gupta ffmpeg at tmm1.net
Sat Sep 14 02:38:31 EEST 2019


On Thu, Sep 12, 2019 at 5:05 PM Mark Thompson <sw at jkqxz.net> wrote:

> On 03/09/2019 02:02, Aman Gupta wrote:
> > From: Jonas Karlman <jonas at kwiboo.se>
> >
> > This allows the cli to create a dummy drm hwcontext
> > that can be shared between the v4l2 decoder/scaler/encoder.
> >
> > This is especially useful on older RPI3 where /dev/dri devices
> > are not available in the default configuration.
> >
> > Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
> > Signed-off-by: Aman Gupta <aman at tmm1.net>
> > ---
> >  libavutil/hwcontext_drm.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/libavutil/hwcontext_drm.c b/libavutil/hwcontext_drm.c
> > index 32cbde82eb..aa4794c5e6 100644
> > --- a/libavutil/hwcontext_drm.c
> > +++ b/libavutil/hwcontext_drm.c
> > @@ -43,6 +43,11 @@ static int drm_device_create(AVHWDeviceContext
> *hwdev, const char *device,
> >      AVDRMDeviceContext *hwctx = hwdev->hwctx;
> >      drmVersionPtr version;
> >
> > +    if (device == NULL) {
> > +      hwctx->fd = -1;
> > +      return 0;
> > +    }
> > +
> >      hwctx->fd = open(device, O_RDWR);
> >      if (hwctx->fd < 0)
> >          return AVERROR(errno);
> >
>
> This smells like a hack for making something work in the ffmpeg
> command-line utility.  Can you explain the use-case?  If necessary,
> modifying the behaviour of ffmpeg would probably be better than putting
> this sort of thing into the library.
>

Since this v4l2 decoder can output either software frames or DRM frames,
this allows using the CLI to switch between the two modes. i.e.:

ffmpeg -c:v h264_v4l2m2m -i sample.mpg
vs
./ffmpeg -hwaccel drm -hwaccel_output_format drm_prime -c:v h264_v4l2m2m -i
sample.mpg

This is also why I made the decoder define itself
as AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX, so it was possible to use the
CLI to trigger the DRM prime decoding mode.

It sounds like it might be better to define a new v4l2 hwaccel/hwdevice,
and maybe just return EINVAL from it's map/transfer methods since those are
not applicable?

Aman




>
> - Mark
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list