diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c index 5091cd4725..e06a91f11b 100644 --- a/libavdevice/v4l2.c +++ b/libavdevice/v4l2.c @@ -72,58 +72,81 @@ struct buff_data { struct fmt_map { enum PixelFormat ff_fmt; + enum CodecID codec_id; uint32_t v4l2_fmt; }; static struct fmt_map fmt_conversion_table[] = { { .ff_fmt = PIX_FMT_YUV420P, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_YUV420, }, { .ff_fmt = PIX_FMT_YUV422P, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_YUV422P, }, { .ff_fmt = PIX_FMT_YUYV422, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_YUYV, }, { .ff_fmt = PIX_FMT_UYVY422, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_UYVY, }, { .ff_fmt = PIX_FMT_YUV411P, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_YUV411P, }, { .ff_fmt = PIX_FMT_YUV410P, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_YUV410, }, { .ff_fmt = PIX_FMT_RGB555, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_RGB555, }, { .ff_fmt = PIX_FMT_RGB565, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_RGB565, }, { .ff_fmt = PIX_FMT_BGR24, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_BGR24, }, { .ff_fmt = PIX_FMT_RGB24, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_RGB24, }, { .ff_fmt = PIX_FMT_BGRA, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_BGR32, }, { .ff_fmt = PIX_FMT_GRAY8, + .codec_id = CODEC_ID_RAWVIDEO, .v4l2_fmt = V4L2_PIX_FMT_GREY, }, + { + .ff_fmt = PIX_FMT_NONE, + .codec_id = CODEC_ID_MJPEG, + .v4l2_fmt = V4L2_PIX_FMT_MJPEG, + }, + { + .ff_fmt = PIX_FMT_NONE, + .codec_id = CODEC_ID_MJPEG, + .v4l2_fmt = V4L2_PIX_FMT_JPEG, + }, }; static int device_open(AVFormatContext *ctx, uint32_t *capabilities)