On 09/05/2017 10:27 AM, wm4 wrote:
On Tue, 5 Sep 2017 10:03:49 +0200
Jorge Ramirez wrote:
On 09/05/2017 09:16 AM, Jorge Ramirez wrote:
On 09/05/2017 12:16 AM, Mark Thompson wrote:
On 04/09/17 22:55, Jorge Ramirez wrote:
On 09/04/2017 11:29 PM, Mark Thompson wrote:
... stuff ...
So the seq
On Tue, 5 Sep 2017 10:03:49 +0200
Jorge Ramirez wrote:
> On 09/05/2017 09:16 AM, Jorge Ramirez wrote:
> > On 09/05/2017 12:16 AM, Mark Thompson wrote:
> >> On 04/09/17 22:55, Jorge Ramirez wrote:
> >>> On 09/04/2017 11:29 PM, Mark Thompson wrote:
> > ... stuff ...
> So the sequen
On 09/05/2017 09:16 AM, Jorge Ramirez wrote:
On 09/05/2017 12:16 AM, Mark Thompson wrote:
On 04/09/17 22:55, Jorge Ramirez wrote:
On 09/04/2017 11:29 PM, Mark Thompson wrote:
... stuff ...
So the sequence of calls is:
send_frame(frame 0) -> success
receive_packet() -> EAGAIN
send_frame(frame
On 09/05/2017 12:16 AM, Mark Thompson wrote:
On 04/09/17 22:55, Jorge Ramirez wrote:
On 09/04/2017 11:29 PM, Mark Thompson wrote:
... stuff ...
So the sequence of calls is:
send_frame(frame 0) -> success
receive_packet() -> EAGAIN
send_frame(frame 1) -> success
receive_packet() -> EAGAIN
...
On 04/09/17 22:55, Jorge Ramirez wrote:
> On 09/04/2017 11:29 PM, Mark Thompson wrote:
>>> ... stuff ...
>>
>> So the sequence of calls is:
>>
>> send_frame(frame 0) -> success
>> receive_packet() -> EAGAIN
>> send_frame(frame 1) -> success
>> receive_packet() -> EAGAIN
>> ...
>> send_frame(frame 1
On 09/04/2017 11:29 PM, Mark Thompson wrote:
On 04/09/17 22:07, Jorge Ramirez wrote:
On 09/04/2017 10:45 PM, Mark Thompson wrote:
On 04/09/17 21:34, Jorge Ramirez wrote:
On 09/04/2017 07:55 PM, Mark Thompson wrote:
On 04/09/17 18:01, Jorge Ramirez wrote:
On 09/04/2017 06:31 PM, Mark Thompson
On 04/09/17 22:07, Jorge Ramirez wrote:
> On 09/04/2017 10:45 PM, Mark Thompson wrote:
>> On 04/09/17 21:34, Jorge Ramirez wrote:
>>> On 09/04/2017 07:55 PM, Mark Thompson wrote:
On 04/09/17 18:01, Jorge Ramirez wrote:
> On 09/04/2017 06:31 PM, Mark Thompson wrote:
>> On 04/09/17 17:00
On 09/04/2017 10:45 PM, Mark Thompson wrote:
On 04/09/17 21:34, Jorge Ramirez wrote:
On 09/04/2017 07:55 PM, Mark Thompson wrote:
On 04/09/17 18:01, Jorge Ramirez wrote:
On 09/04/2017 06:31 PM, Mark Thompson wrote:
On 04/09/17 17:00, Jorge Ramirez wrote:
On 09/03/2017 08:23 PM, Mark Thompson
On 04/09/17 21:34, Jorge Ramirez wrote:
> On 09/04/2017 07:55 PM, Mark Thompson wrote:
>> On 04/09/17 18:01, Jorge Ramirez wrote:
>>> On 09/04/2017 06:31 PM, Mark Thompson wrote:
On 04/09/17 17:00, Jorge Ramirez wrote:
> On 09/03/2017 08:23 PM, Mark Thompson wrote:
>> On 03/09/17 17:54
On 09/04/2017 07:55 PM, Mark Thompson wrote:
On 04/09/17 18:01, Jorge Ramirez wrote:
On 09/04/2017 06:31 PM, Mark Thompson wrote:
On 04/09/17 17:00, Jorge Ramirez wrote:
On 09/03/2017 08:23 PM, Mark Thompson wrote:
On 03/09/17 17:54, Jorge Ramirez wrote:
On 09/03/2017 02:27 AM, Mark Thompson
On 04/09/17 18:01, Jorge Ramirez wrote:
> On 09/04/2017 06:31 PM, Mark Thompson wrote:
>> On 04/09/17 17:00, Jorge Ramirez wrote:
>>> On 09/03/2017 08:23 PM, Mark Thompson wrote:
On 03/09/17 17:54, Jorge Ramirez wrote:
> On 09/03/2017 02:27 AM, Mark Thompson wrote:
>>> +/* in ffmpeg th
On 04/09/17 18:16, Jorge Ramirez wrote:
> On 09/04/2017 07:01 PM, Jorge Ramirez wrote:
>> On 09/04/2017 06:31 PM, Mark Thompson wrote:
>>> On 04/09/17 17:00, Jorge Ramirez wrote:
On 09/03/2017 08:23 PM, Mark Thompson wrote:
> On 03/09/17 17:54, Jorge Ramirez wrote:
>> On 09/03/2017 0
On 04/09/17 18:01, Jorge Ramirez wrote:
> On 09/04/2017 06:31 PM, Mark Thompson wrote:
>> On 04/09/17 17:00, Jorge Ramirez wrote:
>>> On 09/03/2017 08:23 PM, Mark Thompson wrote:
On 03/09/17 17:54, Jorge Ramirez wrote:
> On 09/03/2017 02:27 AM, Mark Thompson wrote:
>>> +/* in ffmpeg th
On 09/04/2017 07:01 PM, Jorge Ramirez wrote:
On 09/04/2017 06:31 PM, Mark Thompson wrote:
On 04/09/17 17:00, Jorge Ramirez wrote:
On 09/03/2017 08:23 PM, Mark Thompson wrote:
On 03/09/17 17:54, Jorge Ramirez wrote:
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+/* in ffmpeg there is a single t
On 09/04/2017 06:31 PM, Mark Thompson wrote:
On 04/09/17 17:00, Jorge Ramirez wrote:
On 09/03/2017 08:23 PM, Mark Thompson wrote:
On 03/09/17 17:54, Jorge Ramirez wrote:
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+/* in ffmpeg there is a single thread could be queueing/dequeuing buffers so
On 04/09/17 17:00, Jorge Ramirez wrote:
> On 09/03/2017 08:23 PM, Mark Thompson wrote:
>> On 03/09/17 17:54, Jorge Ramirez wrote:
>>> On 09/03/2017 02:27 AM, Mark Thompson wrote:
> +/* in ffmpeg there is a single thread could be queueing/dequeuing
> buffers so a
> + * timeout is * requ
On 09/03/2017 08:06 PM, Mark Thompson wrote:
On 03/09/17 15:36, Jorge Ramirez wrote:
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+}
+
+/* 2.1 update the AVCodecContext */
+avctx->pix_fmt =
ff_v4l2_v4l2fmt_to_avfmt(capture->format.fmt.pix_mp.pixelformat,
AV_CODEC_ID_RAWVIDEO);
+
On 09/03/2017 08:23 PM, Mark Thompson wrote:
On 03/09/17 17:54, Jorge Ramirez wrote:
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+/* in ffmpeg there is a single thread could be queueing/dequeuing buffers so a
+ * timeout is * required when retrieving a frame in case the driver has not
receive
On 03/09/17 17:54, Jorge Ramirez wrote:
> On 09/03/2017 02:27 AM, Mark Thompson wrote:
>>> +/* in ffmpeg there is a single thread could be queueing/dequeuing buffers
>>> so a
>>> + * timeout is * required when retrieving a frame in case the driver has
>>> not received
>>> + * enough input * to st
On 09/03/2017 08:13 PM, Mark Thompson wrote:
On 03/09/17 16:26, Jorge Ramirez wrote:
On 09/03/2017 04:56 PM, Jorge Ramirez wrote:
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+.long_name = NULL_IF_CONFIG_SMALL("V4L2 mem2mem " LONGNAME " decoder
wrapper"),\
+.type = AVME
On 03/09/17 17:07, Jorge Ramirez wrote:
> On 09/03/2017 02:27 AM, Mark Thompson wrote:
>>> # Enable hwaccels by default.
>>> -enable_weak d3d11va dxva2 vaapi vda vdpau videotoolbox_hwaccel xvmc
>>> +enable_weak d3d11va dxva2 vaapi v4l2_m2m vda vdpau videotoolbox_hwaccel
>>> xvmc
>> [This line ha
On 03/09/17 16:26, Jorge Ramirez wrote:
> On 09/03/2017 04:56 PM, Jorge Ramirez wrote:
>> On 09/03/2017 02:27 AM, Mark Thompson wrote:
+.long_name = NULL_IF_CONFIG_SMALL("V4L2 mem2mem " LONGNAME "
decoder wrapper"),\
+.type = AVMEDIA_TYPE_VIDEO,\
+.id
On 03/09/17 15:36, Jorge Ramirez wrote:
> On 09/03/2017 02:27 AM, Mark Thompson wrote:
>>> +}
>>> +
>>> +/* 2.1 update the AVCodecContext */
>>> +avctx->pix_fmt =
>>> ff_v4l2_v4l2fmt_to_avfmt(capture->format.fmt.pix_mp.pixelformat,
>>> AV_CODEC_ID_RAWVIDEO);
>>> +capture->av_pix_f
On 03/09/17 14:21, Jorge Ramirez wrote:
> On 09/03/2017 02:27 AM, Mark Thompson wrote:
>>> +/* 0. subscribe to source change event */
>>> +memset(&sub, 0, sizeof(sub));
>>> +sub.type = V4L2_EVENT_SOURCE_CHANGE;
>>> +ret = ioctl(s->fd, VIDIOC_SUBSCRIBE_EVENT, &sub);
>>> +if ( ret
On 03/09/17 14:10, Jorge Ramirez wrote:
> On 09/03/2017 02:27 AM, Mark Thompson wrote:
>>> +av_log(s->avctx, AV_LOG_ERROR, "setting capture format\n");
>>> +return ret;
>>> +}
>>> +
>>> +/* 5. do lazy initialization */
>>> +ret = ff_v4l2_context_init(&s->capture, s->capt
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+
+return 0;
+}
+
+static int v4l2m2m_send_frame(AVCodecContext *avctx, const AVFrame *frame)
+{
+V4L2m2mContext *s = avctx->priv_data;
+V4L2Context *const output = &s->output;
+
+return ff_v4l2_enqueue_frame(output, frame);
+}
+
+/* Se
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+/* in ffmpeg there is a single thread could be queueing/dequeuing buffers so a
+ * timeout is * required when retrieving a frame in case the driver has not
received
+ * enough input * to start generating output.
+ *
+ * once decoding starts, the time
On 09/03/2017 02:53 PM, Mark Thompson wrote:
On 03/09/17 13:20, Jorge Ramirez wrote:
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+# check V4L2 codecs available in the API
check_header linux/fb.h
check_header linux/videodev.h
check_header linux/videodev2.h
check_code cc linux/videod
On 09/03/2017 02:27 AM, Mark Thompson wrote:
# Enable hwaccels by default.
-enable_weak d3d11va dxva2 vaapi vda vdpau videotoolbox_hwaccel xvmc
+enable_weak d3d11va dxva2 vaapi v4l2_m2m vda vdpau videotoolbox_hwaccel xvmc
[This line has disappeared on rebase.]
ok, just rebased today and saw
On 09/03/2017 04:56 PM, Jorge Ramirez wrote:
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+.long_name = NULL_IF_CONFIG_SMALL("V4L2 mem2mem " LONGNAME " decoder
wrapper"),\
+.type = AVMEDIA_TYPE_VIDEO,\
+.id = CODEC ,\
+.priv_data_size = sizeof(V4L2m2mC
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+
+val = lfind(&p, profile, &len, sizeof(profile[0]), match_profile);
+if (val)
+return val->v4l2_val;
+
+return FF_PROFILE_UNKNOWN;
Returning FF_PROFILE_UNKNOWN here is bit weird because it mixes the namespaces.
I know that's ho
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+.long_name = NULL_IF_CONFIG_SMALL("V4L2 mem2mem " LONGNAME " decoder
wrapper"),\
+.type = AVMEDIA_TYPE_VIDEO,\
+.id = CODEC ,\
+.priv_data_size = sizeof(V4L2m2mContext),\
+.priv_class = &v4l2_m2m_ ##
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+}
+
+/* 2.1 update the AVCodecContext */
+avctx->pix_fmt =
ff_v4l2_v4l2fmt_to_avfmt(capture->format.fmt.pix_mp.pixelformat,
AV_CODEC_ID_RAWVIDEO);
+capture->av_pix_fmt = avctx->pix_fmt;
+
+/* 3. set the crop parameters */
+se
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+/* 0. subscribe to source change event */
+memset(&sub, 0, sizeof(sub));
+sub.type = V4L2_EVENT_SOURCE_CHANGE;
+ret = ioctl(s->fd, VIDIOC_SUBSCRIBE_EVENT, &sub);
+if ( ret < 0)
+av_log(avctx, AV_LOG_WARNING, "decoding does
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+int ff_v4l2m2m_codec_end(AVCodecContext *avctx)
+{
+V4L2m2mContext *s = avctx->priv_data;
+
+av_log(avctx, AV_LOG_DEBUG, "Closing context\n");
+
+return ff_v4l2_m2m_codec_end(s);
+}
+
+int ff_v4l2m2m_codec_init(AVCodecContext *avctx)
+{
+
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+av_log(s->avctx, AV_LOG_ERROR, "setting capture format\n");
+return ret;
+}
+
+/* 5. do lazy initialization */
+ret = ff_v4l2_context_init(&s->capture, s->capture.lazy_init);
+if (ret) {
+av_log(s->avctx, AV_LOG
On 03/09/17 13:25, Jorge Ramirez wrote:
> On 09/03/2017 02:27 AM, Mark Thompson wrote:
>>> +REGISTER_ENCDEC (H264_V4L2M2M, h264_v4l2m2m);
>>> REGISTER_DECODER(H264_MEDIACODEC, h264_mediacodec);
>>> REGISTER_DECODER(H264_MMAL, h264_mmal);
>>> REGISTER_DECODER(H26
On 03/09/17 13:20, Jorge Ramirez wrote:
> On 09/03/2017 02:27 AM, Mark Thompson wrote:
>>> +# check V4L2 codecs available in the API
>>> check_header linux/fb.h
>>> check_header linux/videodev.h
>>> check_header linux/videodev2.h
>>> check_code cc linux/videodev2.h "struct v4l2_frmsizeenum
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+
+static inline int splane_video(struct v4l2_capability *cap)
+{
+if (cap->capabilities & (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT) &
V4L2_CAP_STREAMING)
From videodev2.h:
#define V4L2_CAP_VIDEO_CAPTURE 0x0001 /* Is a vide
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+
+/* memcpy to the v4l2_buffer planes array when needed */
+struct v4l2_plane planes[VIDEO_MAX_PLANES];
+struct v4l2_buffer buf;
+
+int bytesperline[4];
Why 4? Should this be VIDEO_MAX_PLANES again?
yes
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+REGISTER_ENCDEC (H264_V4L2M2M, h264_v4l2m2m);
REGISTER_DECODER(H264_MEDIACODEC, h264_mediacodec);
REGISTER_DECODER(H264_MMAL, h264_mmal);
REGISTER_DECODER(H264_QSV, h264_qsv);
@@ -220,6 +222,7 @@ static vo
On 09/03/2017 02:27 AM, Mark Thompson wrote:
vorbis_data.o
OBJS-$(CONFIG_VORBIS_ENCODER) += vorbisenc.o vorbis.o \
vorbis_data.o
+OBJS-$(CONFIG_VPLAYER_DECODER) += textdec.o ass.o
Stray cha
On 09/03/2017 02:27 AM, Mark Thompson wrote:
+# check V4L2 codecs available in the API
check_header linux/fb.h
check_header linux/videodev.h
check_header linux/videodev2.h
check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width =
0;" && enable_safe struct_v4l2_
On 09/03/2017 02:27 AM, Mark Thompson wrote:
diff --git a/Changelog b/Changelog
index 8309417..c6fcda3 100644
--- a/Changelog
+++ b/Changelog
@@ -40,6 +40,7 @@ version :
They must always be used by name.
- FITS demuxer and decoder
- FITS muxer and encoder
+- V4L2 mem2mem HW accelerated co
On 02/09/17 21:11, Jorge Ramirez-Ortiz wrote:
> This patchset enhances Alexis Ballier's original patch and validates
> it using Qualcomm's Venus hardware (driver recently landed upstream
> [1]).
>
> This has been tested on Qualcomm's DragonBoard 410c and 820c
> Configure/make s
This patchset enhances Alexis Ballier's original patch and validates
it using Qualcomm's Venus hardware (driver recently landed upstream
[1]).
This has been tested on Qualcomm's DragonBoard 410c and 820c
Configure/make scripts have been validated on Ubuntu 10.04 and
16.04.
46 matches
Mail list logo