mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-23 04:24:35 +02:00
avformat/yuv4mpeg: add gray9/10/12 support
Signed-off-by: Mateusz Brzostek <mateuszb@poczta.onet.pl>
This commit is contained in:
parent
f2c867051c
commit
a4743d2574
@ -126,6 +126,12 @@ static int yuv4_read_header(AVFormatContext *s)
|
|||||||
pix_fmt = AV_PIX_FMT_YUV444P;
|
pix_fmt = AV_PIX_FMT_YUV444P;
|
||||||
} else if (strncmp("mono16", tokstart, 6) == 0) {
|
} else if (strncmp("mono16", tokstart, 6) == 0) {
|
||||||
pix_fmt = AV_PIX_FMT_GRAY16;
|
pix_fmt = AV_PIX_FMT_GRAY16;
|
||||||
|
} else if (strncmp("mono12", tokstart, 6) == 0) {
|
||||||
|
pix_fmt = AV_PIX_FMT_GRAY12;
|
||||||
|
} else if (strncmp("mono10", tokstart, 6) == 0) {
|
||||||
|
pix_fmt = AV_PIX_FMT_GRAY10;
|
||||||
|
} else if (strncmp("mono9", tokstart, 5) == 0) {
|
||||||
|
pix_fmt = AV_PIX_FMT_GRAY9;
|
||||||
} else if (strncmp("mono", tokstart, 4) == 0) {
|
} else if (strncmp("mono", tokstart, 4) == 0) {
|
||||||
pix_fmt = AV_PIX_FMT_GRAY8;
|
pix_fmt = AV_PIX_FMT_GRAY8;
|
||||||
} else {
|
} else {
|
||||||
|
@ -69,6 +69,15 @@ static int yuv4_generate_header(AVFormatContext *s, char* buf)
|
|||||||
case AV_PIX_FMT_GRAY8:
|
case AV_PIX_FMT_GRAY8:
|
||||||
colorspace = " Cmono";
|
colorspace = " Cmono";
|
||||||
break;
|
break;
|
||||||
|
case AV_PIX_FMT_GRAY9:
|
||||||
|
colorspace = " Cmono9";
|
||||||
|
break;
|
||||||
|
case AV_PIX_FMT_GRAY10:
|
||||||
|
colorspace = " Cmono10";
|
||||||
|
break;
|
||||||
|
case AV_PIX_FMT_GRAY12:
|
||||||
|
colorspace = " Cmono12";
|
||||||
|
break;
|
||||||
case AV_PIX_FMT_GRAY16:
|
case AV_PIX_FMT_GRAY16:
|
||||||
colorspace = " Cmono16";
|
colorspace = " Cmono16";
|
||||||
break;
|
break;
|
||||||
@ -184,6 +193,9 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
case AV_PIX_FMT_YUV422P:
|
case AV_PIX_FMT_YUV422P:
|
||||||
case AV_PIX_FMT_YUV444P:
|
case AV_PIX_FMT_YUV444P:
|
||||||
break;
|
break;
|
||||||
|
case AV_PIX_FMT_GRAY9:
|
||||||
|
case AV_PIX_FMT_GRAY10:
|
||||||
|
case AV_PIX_FMT_GRAY12:
|
||||||
case AV_PIX_FMT_GRAY16:
|
case AV_PIX_FMT_GRAY16:
|
||||||
case AV_PIX_FMT_YUV420P9:
|
case AV_PIX_FMT_YUV420P9:
|
||||||
case AV_PIX_FMT_YUV422P9:
|
case AV_PIX_FMT_YUV422P9:
|
||||||
@ -213,7 +225,8 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
ptr += frame->linesize[0];
|
ptr += frame->linesize[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (st->codecpar->format != AV_PIX_FMT_GRAY8 &&
|
if (st->codecpar->format != AV_PIX_FMT_GRAY8 && st->codecpar->format != AV_PIX_FMT_GRAY9 &&
|
||||||
|
st->codecpar->format != AV_PIX_FMT_GRAY10 && st->codecpar->format != AV_PIX_FMT_GRAY12 &&
|
||||||
st->codecpar->format != AV_PIX_FMT_GRAY16) {
|
st->codecpar->format != AV_PIX_FMT_GRAY16) {
|
||||||
// Adjust for smaller Cb and Cr planes
|
// Adjust for smaller Cb and Cr planes
|
||||||
av_pix_fmt_get_chroma_sub_sample(st->codecpar->format, &h_chroma_shift,
|
av_pix_fmt_get_chroma_sub_sample(st->codecpar->format, &h_chroma_shift,
|
||||||
@ -255,11 +268,14 @@ static int yuv4_write_header(AVFormatContext *s)
|
|||||||
"stream, some mjpegtools might not work.\n");
|
"stream, some mjpegtools might not work.\n");
|
||||||
break;
|
break;
|
||||||
case AV_PIX_FMT_GRAY8:
|
case AV_PIX_FMT_GRAY8:
|
||||||
case AV_PIX_FMT_GRAY16:
|
|
||||||
case AV_PIX_FMT_YUV420P:
|
case AV_PIX_FMT_YUV420P:
|
||||||
case AV_PIX_FMT_YUV422P:
|
case AV_PIX_FMT_YUV422P:
|
||||||
case AV_PIX_FMT_YUV444P:
|
case AV_PIX_FMT_YUV444P:
|
||||||
break;
|
break;
|
||||||
|
case AV_PIX_FMT_GRAY9:
|
||||||
|
case AV_PIX_FMT_GRAY10:
|
||||||
|
case AV_PIX_FMT_GRAY12:
|
||||||
|
case AV_PIX_FMT_GRAY16:
|
||||||
case AV_PIX_FMT_YUV420P9:
|
case AV_PIX_FMT_YUV420P9:
|
||||||
case AV_PIX_FMT_YUV422P9:
|
case AV_PIX_FMT_YUV422P9:
|
||||||
case AV_PIX_FMT_YUV444P9:
|
case AV_PIX_FMT_YUV444P9:
|
||||||
@ -291,7 +307,8 @@ static int yuv4_write_header(AVFormatContext *s)
|
|||||||
"yuv444p10, yuv422p10, yuv420p10, "
|
"yuv444p10, yuv422p10, yuv420p10, "
|
||||||
"yuv444p12, yuv422p12, yuv420p12, "
|
"yuv444p12, yuv422p12, yuv420p12, "
|
||||||
"yuv444p14, yuv422p14, yuv420p14, "
|
"yuv444p14, yuv422p14, yuv420p14, "
|
||||||
"yuv444p16, yuv422p16, yuv420p16 "
|
"yuv444p16, yuv422p16, yuv420p16, "
|
||||||
|
"gray9, gray10, gray12 "
|
||||||
"and gray16 pixel formats. "
|
"and gray16 pixel formats. "
|
||||||
"Use -pix_fmt to select one.\n");
|
"Use -pix_fmt to select one.\n");
|
||||||
return AVERROR(EIO);
|
return AVERROR(EIO);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user