Add support for V4L2 compressed formats in the table used for converting

between V4L2 formats and ffmpeg's formats/codecs.
Patch by klchxbec AT freenet DOT de.

Originally committed as revision 20857 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Luca Abeni 2009-12-14 10:33:24 +00:00
parent 9202218e5d
commit 9eb6e9d9d3
1 changed files with 23 additions and 0 deletions

View File

@ -72,58 +72,81 @@ struct buff_data {
struct fmt_map { struct fmt_map {
enum PixelFormat ff_fmt; enum PixelFormat ff_fmt;
enum CodecID codec_id;
uint32_t v4l2_fmt; uint32_t v4l2_fmt;
}; };
static struct fmt_map fmt_conversion_table[] = { static struct fmt_map fmt_conversion_table[] = {
{ {
.ff_fmt = PIX_FMT_YUV420P, .ff_fmt = PIX_FMT_YUV420P,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_YUV420, .v4l2_fmt = V4L2_PIX_FMT_YUV420,
}, },
{ {
.ff_fmt = PIX_FMT_YUV422P, .ff_fmt = PIX_FMT_YUV422P,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_YUV422P, .v4l2_fmt = V4L2_PIX_FMT_YUV422P,
}, },
{ {
.ff_fmt = PIX_FMT_YUYV422, .ff_fmt = PIX_FMT_YUYV422,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_YUYV, .v4l2_fmt = V4L2_PIX_FMT_YUYV,
}, },
{ {
.ff_fmt = PIX_FMT_UYVY422, .ff_fmt = PIX_FMT_UYVY422,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_UYVY, .v4l2_fmt = V4L2_PIX_FMT_UYVY,
}, },
{ {
.ff_fmt = PIX_FMT_YUV411P, .ff_fmt = PIX_FMT_YUV411P,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_YUV411P, .v4l2_fmt = V4L2_PIX_FMT_YUV411P,
}, },
{ {
.ff_fmt = PIX_FMT_YUV410P, .ff_fmt = PIX_FMT_YUV410P,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_YUV410, .v4l2_fmt = V4L2_PIX_FMT_YUV410,
}, },
{ {
.ff_fmt = PIX_FMT_RGB555, .ff_fmt = PIX_FMT_RGB555,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_RGB555, .v4l2_fmt = V4L2_PIX_FMT_RGB555,
}, },
{ {
.ff_fmt = PIX_FMT_RGB565, .ff_fmt = PIX_FMT_RGB565,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_RGB565, .v4l2_fmt = V4L2_PIX_FMT_RGB565,
}, },
{ {
.ff_fmt = PIX_FMT_BGR24, .ff_fmt = PIX_FMT_BGR24,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_BGR24, .v4l2_fmt = V4L2_PIX_FMT_BGR24,
}, },
{ {
.ff_fmt = PIX_FMT_RGB24, .ff_fmt = PIX_FMT_RGB24,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_RGB24, .v4l2_fmt = V4L2_PIX_FMT_RGB24,
}, },
{ {
.ff_fmt = PIX_FMT_BGRA, .ff_fmt = PIX_FMT_BGRA,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_BGR32, .v4l2_fmt = V4L2_PIX_FMT_BGR32,
}, },
{ {
.ff_fmt = PIX_FMT_GRAY8, .ff_fmt = PIX_FMT_GRAY8,
.codec_id = CODEC_ID_RAWVIDEO,
.v4l2_fmt = V4L2_PIX_FMT_GREY, .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) static int device_open(AVFormatContext *ctx, uint32_t *capabilities)