definições de formato de pixel ffmpeg

9

ffmpeg -pix_fmtslista muitos formatos de pixel. No meu ffmpeg, existem 66 formatos de pixel diferentes que começam com yuv . Alguns deles são familiares para mim (por exemplo, yuv422p), mas a maioria deles não é (por exemplo, yuva422p16be).

Onde esses formatos de pixel são definidos?

Doug Richardson
fonte
3
A maioria é auto-descritiva. yuva422p16be YUV são planos luma e croma. a é o canal alfa. 422 é a descrição do tamanho do plano, p significa plaina, 16be significa 16 bits por pixel no formato big endian.
SlimSCSI
Obrigado @SlimSCSI. Você sabe o que j representa em yuvj440p?
Doug Richardson
5
O YUV420P usa o intervalo de 16 a 239 para descrever os valores de luminância e de croma. Portanto, valores de 0 a 16 são mapeados para o mesmo nível de saída, assim como os valores 239-255. O YUVJ420P usa a faixa completa de 0 a 255. Não sei por que é J.
Stib
4
Em libavutil/pixfmt.h: AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting color_range.
llogan 12/09/2015

Respostas:

7

Se sua pergunta foi

Onde esses formatos de pixel são definidos?

Vá para http://ffmpeg.org/download.html e baixe a fonte do ffmpeg. Depois descompacte

tar -xavf FILENAME.tar.*

e desça para a pasta no código-fonte que é chamado libavutil

cd ffmpeg-*/libavutil/

e abra o arquivo pixfmt.honde você encontrará uma descrição de todos os formatos de pixel. Algumas linhas de amostra

AV_PIX_FMT_YUV420P,   ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)          
AV_PIX_FMT_YUYV422,   ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr
AV_PIX_FMT_RGB24,     ///< packed RGB 8:8:8, 24bpp, RGBRGB...
AV_PIX_FMT_BGR24,     ///< packed RGB 8:8:8, 24bpp, BGRBGR...
AV_PIX_FMT_YUV422P,   ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)

Além disso, você pode ler https://en.wikipedia.org/wiki/YUV e suas fontes e links externos citados.

erik
fonte