예제 #1
0
        public static void av_image_fill_max_pixsteps(int[] max_pixsteps, int[] max_pixstep_comps,
                                                      AVPixFmtDescriptor pixdesc)
        {
            int i;

            // memset(max_pixsteps, 0, 4*sizeof(max_pixsteps[0]));
            Arrays.Fill(max_pixsteps, 0, 4, 0);

            if (max_pixstep_comps != null)
            {
                // memset(max_pixstep_comps, 0, 4*sizeof(max_pixstep_comps[0]));
                Arrays.Fill(max_pixstep_comps, 0, 4, 0);
            }

            for (i = 0; i < 4; i++)
            {
                AVComponentDescriptor comp = (pixdesc.comp[i]);
                if ((comp.step_minus1 + 1) > max_pixsteps[comp.plane])
                {
                    max_pixsteps[comp.plane] = comp.step_minus1 + 1;
                    if (max_pixstep_comps != null)
                    {
                        max_pixstep_comps[comp.plane] = i;
                    }
                }
            }
        }
예제 #2
0
        //[PIX_FMT_NB] = {
        //		    [PIX_FMT_YUV420P] = {
        //		        .name = "yuv420p",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 1,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,0,1,0,7},        /* U */
        //		            {2,0,1,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_YUYV422] = {
        //		        .name = "yuyv422",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,1,0,7},        /* Y */
        //		            {0,3,2,0,7},        /* U */
        //		            {0,3,4,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_RGB24] = {
        //		        .name = "rgb24",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,2,1,0,7},        /* R */
        //		            {0,2,2,0,7},        /* G */
        //		            {0,2,3,0,7},        /* B */
        //		        },
        //		    },
        //		    [PIX_FMT_BGR24] = {
        //		        .name = "bgr24",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,2,1,0,7},        /* B */
        //		            {0,2,2,0,7},        /* G */
        //		            {0,2,3,0,7},        /* R */
        //		        },
        //		    },
        //		    [PIX_FMT_YUV422P] = {
        //		        .name = "yuv422p",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,0,1,0,7},        /* U */
        //		            {2,0,1,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_YUV444P] = {
        //		        .name = "yuv444p",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,0,1,0,7},        /* U */
        //		            {2,0,1,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_YUV410P] = {
        //		        .name = "yuv410p",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 2,
        //		        .log2_chroma_h= 2,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,0,1,0,7},        /* U */
        //		            {2,0,1,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_YUV411P] = {
        //		        .name = "yuv411p",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 2,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,0,1,0,7},        /* U */
        //		            {2,0,1,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_GRAY8] = {
        //		        .name = "gray",
        //		        .nb_components= 1,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		        },
        //		        .flags = PIX_FMT_PAL,
        //		    },
        //		    [PIX_FMT_MONOWHITE] = {
        //		        .name = "monow",
        //		        .nb_components= 1,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,0,0},        /* Y */
        //		        },
        //		        .flags = PIX_FMT_BITSTREAM,
        //		    },
        //		    [PIX_FMT_MONOBLACK] = {
        //		        .name = "monob",
        //		        .nb_components= 1,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,7,0},        /* Y */
        //		        },
        //		        .flags = PIX_FMT_BITSTREAM,
        //		    },
        //		    [PIX_FMT_PAL8] = {
        //		        .name = "pal8",
        //		        .nb_components= 1,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,0,7},
        //		        },
        //		        .flags = PIX_FMT_PAL,
        //		    },
        //		    [PIX_FMT_YUVJ420P] = {
        //		        .name = "yuvj420p",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 1,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,0,1,0,7},        /* U */
        //		            {2,0,1,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_YUVJ422P] = {
        //		        .name = "yuvj422p",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,0,1,0,7},        /* U */
        //		            {2,0,1,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_YUVJ444P] = {
        //		        .name = "yuvj444p",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,0,1,0,7},        /* U */
        //		            {2,0,1,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_XVMC_MPEG2_MC] = {
        //		        .name = "xvmcmc",
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_XVMC_MPEG2_IDCT] = {
        //		        .name = "xvmcidct",
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_UYVY422] = {
        //		        .name = "uyvy422",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,2,0,7},        /* Y */
        //		            {0,3,1,0,7},        /* U */
        //		            {0,3,3,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_UYYVYY411] = {
        //		        .name = "uyyvyy411",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 2,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,3,2,0,7},        /* Y */
        //		            {0,5,1,0,7},        /* U */
        //		            {0,5,4,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_BGR8] = {
        //		        .name = "bgr8",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,6,1},        /* B */
        //		            {0,0,1,3,2},        /* G */
        //		            {0,0,1,0,2},        /* R */
        //		        },
        //		        .flags = PIX_FMT_PAL,
        //		    },
        //		    [PIX_FMT_BGR4] = {
        //		        .name = "bgr4",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,3,1,0,0},        /* B */
        //		            {0,3,2,0,1},        /* G */
        //		            {0,3,4,0,0},        /* R */
        //		        },
        //		        .flags = PIX_FMT_BITSTREAM,
        //		    },
        //		    [PIX_FMT_BGR4_BYTE] = {
        //		        .name = "bgr4_byte",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,3,0},        /* B */
        //		            {0,0,1,1,1},        /* G */
        //		            {0,0,1,0,0},        /* R */
        //		        },
        //		        .flags = PIX_FMT_PAL,
        //		    },
        //		    [PIX_FMT_RGB8] = {
        //		        .name = "rgb8",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,6,1},        /* R */
        //		            {0,0,1,3,2},        /* G */
        //		            {0,0,1,0,2},        /* B */
        //		        },
        //		        .flags = PIX_FMT_PAL,
        //		    },
        //		    [PIX_FMT_RGB4] = {
        //		        .name = "rgb4",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,3,1,0,0},       /* R */
        //		            {0,3,2,0,1},       /* G */
        //		            {0,3,4,0,0},       /* B */
        //		        },
        //		        .flags = PIX_FMT_BITSTREAM,
        //		    },
        //		    [PIX_FMT_RGB4_BYTE] = {
        //		        .name = "rgb4_byte",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,0,1,3,0},        /* R */
        //		            {0,0,1,1,1},        /* G */
        //		            {0,0,1,0,0},        /* B */
        //		        },
        //		        .flags = PIX_FMT_PAL,
        //		    },
        //		    [PIX_FMT_NV12] = {
        //		        .name = "nv12",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 1,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,1,1,0,7},        /* U */
        //		            {1,1,2,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_NV21] = {
        //		        .name = "nv21",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 1,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,1,1,0,7},        /* V */
        //		            {1,1,2,0,7},        /* U */
        //		        },
        //		    },
        //		    [PIX_FMT_ARGB] = {
        //		        .name = "argb",
        //		        .nb_components= 4,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,3,1,0,7},        /* A */
        //		            {0,3,2,0,7},        /* R */
        //		            {0,3,3,0,7},        /* G */
        //		            {0,3,4,0,7},        /* B */
        //		        },
        //		    },
        //		    [PIX_FMT_RGBA] = {
        //		        .name = "rgba",
        //		        .nb_components= 4,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,3,1,0,7},        /* R */
        //		            {0,3,2,0,7},        /* G */
        //		            {0,3,3,0,7},        /* B */
        //		            {0,3,4,0,7},        /* A */
        //		        },
        //		    },
        //		    [PIX_FMT_ABGR] = {
        //		        .name = "abgr",
        //		        .nb_components= 4,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,3,1,0,7},        /* A */
        //		            {0,3,2,0,7},        /* B */
        //		            {0,3,3,0,7},        /* G */
        //		            {0,3,4,0,7},        /* R */
        //		        },
        //		    },
        //		    [PIX_FMT_BGRA] = {
        //		        .name = "bgra",
        //		        .nb_components= 4,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,3,1,0,7},        /* B */
        //		            {0,3,2,0,7},        /* G */
        //		            {0,3,3,0,7},        /* R */
        //		            {0,3,4,0,7},        /* A */
        //		        },
        //		    },
        //		    [PIX_FMT_GRAY16BE] = {
        //		        .name = "gray16be",
        //		        .nb_components= 1,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,1,0,15},       /* Y */
        //		        },
        //		        .flags = PIX_FMT_BE,
        //		    },
        //		    [PIX_FMT_GRAY16LE] = {
        //		        .name = "gray16le",
        //		        .nb_components= 1,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,1,0,15},       /* Y */
        //		        },
        //		    },
        //		    [PIX_FMT_YUV440P] = {
        //		        .name = "yuv440p",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 1,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,0,1,0,7},        /* U */
        //		            {2,0,1,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_YUVJ440P] = {
        //		        .name = "yuvj440p",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 1,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,0,1,0,7},        /* U */
        //		            {2,0,1,0,7},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_YUVA420P] = {
        //		        .name = "yuva420p",
        //		        .nb_components= 4,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 1,
        //		        .comp = {
        //		            {0,0,1,0,7},        /* Y */
        //		            {1,0,1,0,7},        /* U */
        //		            {2,0,1,0,7},        /* V */
        //		            {3,0,1,0,7},        /* A */
        //		        },
        //		    },
        //		    [PIX_FMT_VDPAU_H264] = {
        //		        .name = "vdpau_h264",
        //		        .log2_chroma_w = 1,
        //		        .log2_chroma_h = 1,
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_VDPAU_MPEG1] = {
        //		        .name = "vdpau_mpeg1",
        //		        .log2_chroma_w = 1,
        //		        .log2_chroma_h = 1,
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_VDPAU_MPEG2] = {
        //		        .name = "vdpau_mpeg2",
        //		        .log2_chroma_w = 1,
        //		        .log2_chroma_h = 1,
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_VDPAU_WMV3] = {
        //		        .name = "vdpau_wmv3",
        //		        .log2_chroma_w = 1,
        //		        .log2_chroma_h = 1,
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_VDPAU_VC1] = {
        //		        .name = "vdpau_vc1",
        //		        .log2_chroma_w = 1,
        //		        .log2_chroma_h = 1,
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_VDPAU_MPEG4] = {
        //		        .name = "vdpau_mpeg4",
        //		        .log2_chroma_w = 1,
        //		        .log2_chroma_h = 1,
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_RGB48BE] = {
        //		        .name = "rgb48be",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,5,1,0,15},       /* R */
        //		            {0,5,3,0,15},       /* G */
        //		            {0,5,5,0,15},       /* B */
        //		        },
        //		        .flags = PIX_FMT_BE,
        //		    },
        //		    [PIX_FMT_RGB48LE] = {
        //		        .name = "rgb48le",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,5,1,0,15},       /* R */
        //		            {0,5,3,0,15},       /* G */
        //		            {0,5,5,0,15},       /* B */
        //		        },
        //		    },
        //		    [PIX_FMT_RGB565BE] = {
        //		        .name = "rgb565be",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,0,3,4},        /* R */
        //		            {0,1,1,5,5},        /* G */
        //		            {0,1,1,0,4},        /* B */
        //		        },
        //		        .flags = PIX_FMT_BE,
        //		    },
        //		    [PIX_FMT_RGB565LE] = {
        //		        .name = "rgb565le",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,2,3,4},        /* R */
        //		            {0,1,1,5,5},        /* G */
        //		            {0,1,1,0,4},        /* B */
        //		        },
        //		    },
        //		    [PIX_FMT_RGB555BE] = {
        //		        .name = "rgb555be",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,0,2,4},        /* R */
        //		            {0,1,1,5,4},        /* G */
        //		            {0,1,1,0,4},        /* B */
        //		        },
        //		        .flags = PIX_FMT_BE,
        //		    },
        //		    [PIX_FMT_RGB555LE] = {
        //		        .name = "rgb555le",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,2,2,4},        /* R */
        //		            {0,1,1,5,4},        /* G */
        //		            {0,1,1,0,4},        /* B */
        //		        },
        //		    },
        //		    [PIX_FMT_RGB444BE] = {
        //		        .name = "rgb444be",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,0,0,3},        /* R */
        //		            {0,1,1,4,3},        /* G */
        //		            {0,1,1,0,3},        /* B */
        //		        },
        //		        .flags = PIX_FMT_BE,
        //		    },
        //		    [PIX_FMT_RGB444LE] = {
        //		        .name = "rgb444le",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,2,0,3},        /* R */
        //		            {0,1,1,4,3},        /* G */
        //		            {0,1,1,0,3},        /* B */
        //		        },
        //		    },
        //		    [PIX_FMT_BGR565BE] = {
        //		        .name = "bgr565be",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,0,3,4},        /* B */
        //		            {0,1,1,5,5},        /* G */
        //		            {0,1,1,0,4},        /* R */
        //		        },
        //		        .flags = PIX_FMT_BE,
        //		    },
        //		    [PIX_FMT_BGR565LE] = {
        //		        .name = "bgr565le",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,2,3,4},        /* B */
        //		            {0,1,1,5,5},        /* G */
        //		            {0,1,1,0,4},        /* R */
        //		        },
        //		    },
        //		    [PIX_FMT_BGR555BE] = {
        //		        .name = "bgr555be",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,0,2,4},       /* B */
        //		            {0,1,1,5,4},       /* G */
        //		            {0,1,1,0,4},       /* R */
        //		        },
        //		        .flags = PIX_FMT_BE,
        //		     },
        //		    [PIX_FMT_BGR555LE] = {
        //		        .name = "bgr555le",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,2,2,4},        /* B */
        //		            {0,1,1,5,4},        /* G */
        //		            {0,1,1,0,4},        /* R */
        //		        },
        //		    },
        //		    [PIX_FMT_BGR444BE] = {
        //		        .name = "bgr444be",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,0,0,3},       /* B */
        //		            {0,1,1,4,3},       /* G */
        //		            {0,1,1,0,3},       /* R */
        //		        },
        //		        .flags = PIX_FMT_BE,
        //		     },
        //		    [PIX_FMT_BGR444LE] = {
        //		        .name = "bgr444le",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,2,0,3},        /* B */
        //		            {0,1,1,4,3},        /* G */
        //		            {0,1,1,0,3},        /* R */
        //		        },
        //		    },
        //		    [PIX_FMT_VAAPI_MOCO] = {
        //		        .name = "vaapi_moco",
        //		        .log2_chroma_w = 1,
        //		        .log2_chroma_h = 1,
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_VAAPI_IDCT] = {
        //		        .name = "vaapi_idct",
        //		        .log2_chroma_w = 1,
        //		        .log2_chroma_h = 1,
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_VAAPI_VLD] = {
        //		        .name = "vaapi_vld",
        //		        .log2_chroma_w = 1,
        //		        .log2_chroma_h = 1,
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_YUV420P16LE] = {
        //		        .name = "yuv420p16le",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 1,
        //		        .comp = {
        //		            {0,1,1,0,15},        /* Y */
        //		            {1,1,1,0,15},        /* U */
        //		            {2,1,1,0,15},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_YUV420P16BE] = {
        //		        .name = "yuv420p16be",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 1,
        //		        .comp = {
        //		            {0,1,1,0,15},        /* Y */
        //		            {1,1,1,0,15},        /* U */
        //		            {2,1,1,0,15},        /* V */
        //		        },
        //		        .flags = PIX_FMT_BE,
        //		    },
        //		    [PIX_FMT_YUV422P16LE] = {
        //		        .name = "yuv422p16le",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,1,0,15},        /* Y */
        //		            {1,1,1,0,15},        /* U */
        //		            {2,1,1,0,15},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_YUV422P16BE] = {
        //		        .name = "yuv422p16be",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 1,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,1,0,15},        /* Y */
        //		            {1,1,1,0,15},        /* U */
        //		            {2,1,1,0,15},        /* V */
        //		        },
        //		        .flags = PIX_FMT_BE,
        //		    },
        //		    [PIX_FMT_YUV444P16LE] = {
        //		        .name = "yuv444p16le",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,1,0,15},        /* Y */
        //		            {1,1,1,0,15},        /* U */
        //		            {2,1,1,0,15},        /* V */
        //		        },
        //		    },
        //		    [PIX_FMT_YUV444P16BE] = {
        //		        .name = "yuv444p16be",
        //		        .nb_components= 3,
        //		        .log2_chroma_w= 0,
        //		        .log2_chroma_h= 0,
        //		        .comp = {
        //		            {0,1,1,0,15},        /* Y */
        //		            {1,1,1,0,15},        /* U */
        //		            {2,1,1,0,15},        /* V */
        //		        },
        //		        .flags = PIX_FMT_BE,
        //		    },
        //		    [PIX_FMT_DXVA2_VLD] = {
        //		        .name = "dxva2_vld",
        //		        .log2_chroma_w = 1,
        //		        .log2_chroma_h = 1,
        //		        .flags = PIX_FMT_HWACCEL,
        //		    },
        //		    [PIX_FMT_Y400A] = {
        //		        .name = "y400a",
        //		        .nb_components= 2,
        //		        .comp = {
        //		            {0,1,1,0,7},        /* Y */
        //		            {0,1,2,0,7},        /* A */
        //		        },
        //		    },
        //		};


        public static void av_image_copy(byte[][] dst_base,
                                         int[] dst_offset,
                                         int[] dst_linesizes,
                                         byte[][] src_base,
                                         int[] src_offset,
                                         int[] src_linesizes,
                                         /* enum PixelFormat */ int pix_fmt, int width, int height)
        {
            AVPixFmtDescriptor desc = av_pix_fmt_descriptors[pix_fmt];

            // No H/W Accel
            // if (desc.flags & PIX_FMT_HWACCEL)
            // return;

            if ((desc.flags & PIX_FMT_PAL) != 0)
            {
                av_image_copy_plane(dst_base[0], dst_offset[0], dst_linesizes[0], src_base[0], src_offset[0],
                                    src_linesizes[0], width, height);
                /* copy the palette */
                Array.Copy(src_base[1], src_offset[1], dst_base[1], dst_offset[1], 4 * 256);
                // memcpy(dst_data[1], src_data[1], 4*256);
            }
            else
            {
                int i, planes_nb = 0;

                for (i = 0; i < desc.nb_components; i++)
                {
                    planes_nb = Math.Max(planes_nb, desc.comp[i].plane + 1);
                }

                for (i = 0; i < planes_nb; i++)
                {
                    int h      = height;
                    int bwidth = av_image_get_linesize(pix_fmt, width, i);

                    if (i == 1 || i == 2)
                    {
                        h = -((-height) >> desc.log2_chroma_h);
                    }

                    av_image_copy_plane(
                        dst_base[i], dst_offset[i], dst_linesizes[i], src_base[i], src_offset[i],
                        src_linesizes[i], bwidth, h
                        );
                }
            }
        }
예제 #3
0
        public static int av_image_get_linesize(/*enum PixelFormat*/ int pix_fmt, int width, int plane)
        {
            AVPixFmtDescriptor desc = av_pix_fmt_descriptors[pix_fmt];

            int[] max_step      = new int[4];              /* max pixel step for each plane */
            int[] max_step_comp = new int[4];              /* the component for each plane which has the max pixel step */
            int   s;

            if ((desc.flags & PIX_FMT_BITSTREAM) != 0)
            {
                return((width * (desc.comp[0].step_minus1 + 1) + 7) >> 3);
            }

            av_image_fill_max_pixsteps(max_step, max_step_comp, desc);
            s = (max_step_comp[plane] == 1 || max_step_comp[plane] == 2) ? desc.log2_chroma_w : 0;
            return(max_step[plane] * (((width + (1 << s) - 1)) >> s));
        }