comparison imgconvert.c @ 12386:b4b2f1006d9d libavcodec

Implement av_get_image_linesize() and use it in ff_get_plane_bytewidth(). The new implementation is more generic, more compact and more correct.
author stefano
date Thu, 12 Aug 2010 15:05:58 +0000
parents e1ef713061ce
children e7de1ba6dbc0
comparison
equal deleted inserted replaced
12385:d0b25641338b 12386:b4b2f1006d9d
794 } 794 }
795 } 795 }
796 796
797 int ff_get_plane_bytewidth(enum PixelFormat pix_fmt, int width, int plane) 797 int ff_get_plane_bytewidth(enum PixelFormat pix_fmt, int width, int plane)
798 { 798 {
799 int bits; 799 return av_get_image_linesize(pix_fmt, width, plane);
800 const PixFmtInfo *pf = &pix_fmt_info[pix_fmt];
801 const AVPixFmtDescriptor *desc = &av_pix_fmt_descriptors[pix_fmt];
802
803 pf = &pix_fmt_info[pix_fmt];
804 switch(pf->pixel_type) {
805 case FF_PIXEL_PACKED:
806 switch(pix_fmt) {
807 case PIX_FMT_YUYV422:
808 case PIX_FMT_UYVY422:
809 case PIX_FMT_RGB565BE:
810 case PIX_FMT_RGB565LE:
811 case PIX_FMT_RGB555BE:
812 case PIX_FMT_RGB555LE:
813 case PIX_FMT_RGB444BE:
814 case PIX_FMT_RGB444LE:
815 case PIX_FMT_BGR565BE:
816 case PIX_FMT_BGR565LE:
817 case PIX_FMT_BGR555BE:
818 case PIX_FMT_BGR555LE:
819 case PIX_FMT_BGR444BE:
820 case PIX_FMT_BGR444LE:
821 bits = 16;
822 break;
823 case PIX_FMT_UYYVYY411:
824 bits = 12;
825 break;
826 default:
827 bits = pf->depth * pf->nb_channels;
828 break;
829 }
830 return (width * bits + 7) >> 3;
831 break;
832 case FF_PIXEL_PLANAR:
833 if ((pix_fmt != PIX_FMT_NV12 && pix_fmt != PIX_FMT_NV21) &&
834 (plane == 1 || plane == 2))
835 width= -((-width)>>desc->log2_chroma_w);
836
837 return (width * pf->depth + 7) >> 3;
838 break;
839 case FF_PIXEL_PALETTE:
840 if (plane == 0)
841 return width;
842 break;
843 }
844
845 return -1;
846 } 800 }
847 801
848 void av_picture_data_copy(uint8_t *dst_data[4], int dst_linesize[4], 802 void av_picture_data_copy(uint8_t *dst_data[4], int dst_linesize[4],
849 uint8_t *src_data[4], int src_linesize[4], 803 uint8_t *src_data[4], int src_linesize[4],
850 enum PixelFormat pix_fmt, int width, int height) 804 enum PixelFormat pix_fmt, int width, int height)