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