Originally committed as revision 20610 to svn://svn.ffmpeg.org/ffmpeg/trunk
Unified · Split
| @@ -689,7 +689,7 @@ int ff_fill_linesize(AVPicture *picture, enum PixelFormat pix_fmt, int width) · 688 unmodified lines | ||
| 689 | 689 | case PIX_FMT_NV21: |
| 690 | 690 | w2 = (width + (1 << pinfo->x_chroma_shift) - 1) >> pinfo->x_chroma_shift; |
| 691 | 691 | picture->linesize[0] = width; |
| 692 | − picture->linesize[1] = w2; | |
| 692 | + picture->linesize[1] = 2 * w2; | |
| 693 | 693 | break; |
| 694 | 694 | case PIX_FMT_RGB24: |
| 695 | 695 | case PIX_FMT_BGR24: |
| @@ -789,12 +789,12 @@ int ff_fill_pointer(AVPicture *picture, uint8_t *ptr, enum PixelFormat pix_fmt, · 93 unmodified lines | ||
| 789 | 789 | case PIX_FMT_NV12: |
| 790 | 790 | case PIX_FMT_NV21: |
| 791 | 791 | h2 = (height + (1 << pinfo->y_chroma_shift) - 1) >> pinfo->y_chroma_shift; |
| 792 | − size2 = picture->linesize[1] * h2 * 2; | |
| 792 | + size2 = picture->linesize[1] * h2; | |
| 793 | 793 | picture->data[0] = ptr; |
| 794 | 794 | picture->data[1] = picture->data[0] + size; |
| 795 | 795 | picture->data[2] = NULL; |
| 796 | 796 | picture->data[3] = NULL; |
| 797 | − return size + 2 * size2; | |
| 797 | + return size + size2; | |
| 798 | 798 | case PIX_FMT_RGB24: |
| 799 | 799 | case PIX_FMT_BGR24: |
| 800 | 800 | case PIX_FMT_ARGB: |
| @@ -904,6 +904,8 @@ int avpicture_layout(const AVPicture* src, enum PixelFormat pix_fmt, int width, · 103 unmodified lines | ||
| 904 | 904 | if (i == 1) { |
| 905 | 905 | w = ((width >> pf->x_chroma_shift) * pf->depth + 7) / 8; |
| 906 | 906 | h = height >> pf->y_chroma_shift; |
| 907 | + if (pix_fmt == PIX_FMT_NV12 || pix_fmt == PIX_FMT_NV21) | |
| 908 | + w <<= 1; | |
| 907 | 909 | } else if (i == 3) { |
| 908 | 910 | w = ow; |
| 909 | 911 | h = oh; |