mirror of https://git.ffmpeg.org/ffmpeg.git
picture utils
Originally committed as revision 72 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
0ee50938f1
commit
cf0875950d
|
@ -174,6 +174,15 @@ AVCodec *avcodec_find(enum CodecID id)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *pix_fmt_str[] = {
|
||||||
|
"yuv420p",
|
||||||
|
"yuv422",
|
||||||
|
"rgb24",
|
||||||
|
"bgr24",
|
||||||
|
"yuv422p",
|
||||||
|
"yuv444p",
|
||||||
|
};
|
||||||
|
|
||||||
void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
|
void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
|
||||||
{
|
{
|
||||||
const char *codec_name;
|
const char *codec_name;
|
||||||
|
@ -208,6 +217,11 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
|
||||||
snprintf(buf, buf_size,
|
snprintf(buf, buf_size,
|
||||||
"Video: %s%s",
|
"Video: %s%s",
|
||||||
codec_name, enc->flags & CODEC_FLAG_HQ ? " (hq)" : "");
|
codec_name, enc->flags & CODEC_FLAG_HQ ? " (hq)" : "");
|
||||||
|
if (enc->codec_id == CODEC_ID_RAWVIDEO) {
|
||||||
|
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||||
|
", %s",
|
||||||
|
pix_fmt_str[enc->pix_fmt]);
|
||||||
|
}
|
||||||
if (enc->width) {
|
if (enc->width) {
|
||||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||||
", %dx%d, %0.2f fps",
|
", %dx%d, %0.2f fps",
|
||||||
|
@ -235,6 +249,89 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Picture field are filled with 'ptr' addresses */
|
||||||
|
void avpicture_fill(AVPicture *picture, UINT8 *ptr,
|
||||||
|
int pix_fmt, int width, int height)
|
||||||
|
{
|
||||||
|
int size;
|
||||||
|
|
||||||
|
size = width * height;
|
||||||
|
switch(pix_fmt) {
|
||||||
|
case PIX_FMT_YUV420P:
|
||||||
|
picture->data[0] = ptr;
|
||||||
|
picture->data[1] = picture->data[0] + size;
|
||||||
|
picture->data[2] = picture->data[1] + size / 4;
|
||||||
|
picture->linesize[0] = width;
|
||||||
|
picture->linesize[1] = width / 2;
|
||||||
|
picture->linesize[2] = width / 2;
|
||||||
|
break;
|
||||||
|
case PIX_FMT_YUV422P:
|
||||||
|
picture->data[0] = ptr;
|
||||||
|
picture->data[1] = picture->data[0] + size;
|
||||||
|
picture->data[2] = picture->data[1] + size / 2;
|
||||||
|
picture->linesize[0] = width;
|
||||||
|
picture->linesize[1] = width / 2;
|
||||||
|
picture->linesize[2] = width / 2;
|
||||||
|
break;
|
||||||
|
case PIX_FMT_YUV444P:
|
||||||
|
picture->data[0] = ptr;
|
||||||
|
picture->data[1] = picture->data[0] + size;
|
||||||
|
picture->data[2] = picture->data[1] + size;
|
||||||
|
picture->linesize[0] = width;
|
||||||
|
picture->linesize[1] = width;
|
||||||
|
picture->linesize[2] = width;
|
||||||
|
break;
|
||||||
|
case PIX_FMT_RGB24:
|
||||||
|
case PIX_FMT_BGR24:
|
||||||
|
picture->data[0] = ptr;
|
||||||
|
picture->data[1] = NULL;
|
||||||
|
picture->data[2] = NULL;
|
||||||
|
picture->linesize[0] = width * 3;
|
||||||
|
break;
|
||||||
|
case PIX_FMT_YUV422:
|
||||||
|
picture->data[0] = ptr;
|
||||||
|
picture->data[1] = NULL;
|
||||||
|
picture->data[2] = NULL;
|
||||||
|
picture->linesize[0] = width * 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
picture->data[0] = NULL;
|
||||||
|
picture->data[1] = NULL;
|
||||||
|
picture->data[2] = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int avpicture_get_size(int pix_fmt, int width, int height)
|
||||||
|
{
|
||||||
|
int size;
|
||||||
|
|
||||||
|
size = width * height;
|
||||||
|
switch(pix_fmt) {
|
||||||
|
case PIX_FMT_YUV420P:
|
||||||
|
size = (size * 3) / 2;
|
||||||
|
break;
|
||||||
|
case PIX_FMT_YUV422P:
|
||||||
|
size = (size * 2);
|
||||||
|
break;
|
||||||
|
case PIX_FMT_YUV444P:
|
||||||
|
size = (size * 3);
|
||||||
|
break;
|
||||||
|
case PIX_FMT_RGB24:
|
||||||
|
case PIX_FMT_BGR24:
|
||||||
|
size = (size * 3);
|
||||||
|
break;
|
||||||
|
case PIX_FMT_YUV422:
|
||||||
|
size = (size * 2);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
size = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* must be called before any other functions */
|
/* must be called before any other functions */
|
||||||
void avcodec_init(void)
|
void avcodec_init(void)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue