1cabdff1aSopenharmony_ci/* 2cabdff1aSopenharmony_ci * Raw Video Codec 3cabdff1aSopenharmony_ci * Copyright (c) 2001 Fabrice Bellard 4cabdff1aSopenharmony_ci * 5cabdff1aSopenharmony_ci * This file is part of FFmpeg. 6cabdff1aSopenharmony_ci * 7cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or 8cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public 9cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either 10cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version. 11cabdff1aSopenharmony_ci * 12cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful, 13cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 14cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15cabdff1aSopenharmony_ci * Lesser General Public License for more details. 16cabdff1aSopenharmony_ci * 17cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public 18cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software 19cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20cabdff1aSopenharmony_ci */ 21cabdff1aSopenharmony_ci 22cabdff1aSopenharmony_ci/** 23cabdff1aSopenharmony_ci * @file 24cabdff1aSopenharmony_ci * Raw Video Codec 25cabdff1aSopenharmony_ci */ 26cabdff1aSopenharmony_ci 27cabdff1aSopenharmony_ci#include "libavutil/macros.h" 28cabdff1aSopenharmony_ci#include "avcodec.h" 29cabdff1aSopenharmony_ci#include "raw.h" 30cabdff1aSopenharmony_ci 31cabdff1aSopenharmony_cistatic const PixelFormatTag raw_pix_fmt_tags[] = { 32cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P, MKTAG('I', '4', '2', '0') }, /* Planar formats */ 33cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P, MKTAG('I', 'Y', 'U', 'V') }, 34cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P, MKTAG('y', 'v', '1', '2') }, 35cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P, MKTAG('Y', 'V', '1', '2') }, 36cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV410P, MKTAG('Y', 'U', 'V', '9') }, 37cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV410P, MKTAG('Y', 'V', 'U', '9') }, 38cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV411P, MKTAG('Y', '4', '1', 'B') }, 39cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P, MKTAG('Y', '4', '2', 'B') }, 40cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P, MKTAG('P', '4', '2', '2') }, 41cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P, MKTAG('Y', 'V', '1', '6') }, 42cabdff1aSopenharmony_ci /* yuvjXXX formats are deprecated hacks specific to libav*, 43cabdff1aSopenharmony_ci they are identical to yuvXXX */ 44cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ420P, MKTAG('I', '4', '2', '0') }, /* Planar formats */ 45cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ420P, MKTAG('I', 'Y', 'U', 'V') }, 46cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ420P, MKTAG('Y', 'V', '1', '2') }, 47cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ422P, MKTAG('Y', '4', '2', 'B') }, 48cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ422P, MKTAG('P', '4', '2', '2') }, 49cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY8, MKTAG('Y', '8', '0', '0') }, 50cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY8, MKTAG('Y', '8', ' ', ' ') }, 51cabdff1aSopenharmony_ci 52cabdff1aSopenharmony_ci { AV_PIX_FMT_YUYV422, MKTAG('Y', 'U', 'Y', '2') }, /* Packed formats */ 53cabdff1aSopenharmony_ci { AV_PIX_FMT_YUYV422, MKTAG('Y', '4', '2', '2') }, 54cabdff1aSopenharmony_ci { AV_PIX_FMT_YUYV422, MKTAG('V', '4', '2', '2') }, 55cabdff1aSopenharmony_ci { AV_PIX_FMT_YUYV422, MKTAG('V', 'Y', 'U', 'Y') }, 56cabdff1aSopenharmony_ci { AV_PIX_FMT_YUYV422, MKTAG('Y', 'U', 'N', 'V') }, 57cabdff1aSopenharmony_ci { AV_PIX_FMT_YUYV422, MKTAG('Y', 'U', 'Y', 'V') }, 58cabdff1aSopenharmony_ci { AV_PIX_FMT_YVYU422, MKTAG('Y', 'V', 'Y', 'U') }, /* Philips */ 59cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('U', 'Y', 'V', 'Y') }, 60cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('H', 'D', 'Y', 'C') }, 61cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('U', 'Y', 'N', 'V') }, 62cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('U', 'Y', 'N', 'Y') }, 63cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('u', 'y', 'v', '1') }, 64cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('2', 'V', 'u', '1') }, 65cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', 'R', 'n') }, /* Avid AVI Codec 1:1 */ 66cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', '1', 'x') }, /* Avid 1:1x */ 67cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', 'u', 'p') }, 68cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('V', 'D', 'T', 'Z') }, /* SoftLab-NSK VideoTizer */ 69cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('a', 'u', 'v', '2') }, 70cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('c', 'y', 'u', 'v') }, /* CYUV is also Creative YUV */ 71cabdff1aSopenharmony_ci { AV_PIX_FMT_UYYVYY411, MKTAG('Y', '4', '1', '1') }, 72cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY8, MKTAG('G', 'R', 'E', 'Y') }, 73cabdff1aSopenharmony_ci { AV_PIX_FMT_NV12, MKTAG('N', 'V', '1', '2') }, 74cabdff1aSopenharmony_ci { AV_PIX_FMT_NV21, MKTAG('N', 'V', '2', '1') }, 75cabdff1aSopenharmony_ci 76cabdff1aSopenharmony_ci /* nut */ 77cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB555LE, MKTAG('R', 'G', 'B', 15) }, 78cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR555LE, MKTAG('B', 'G', 'R', 15) }, 79cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB565LE, MKTAG('R', 'G', 'B', 16) }, 80cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR565LE, MKTAG('B', 'G', 'R', 16) }, 81cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB555BE, MKTAG(15 , 'B', 'G', 'R') }, 82cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR555BE, MKTAG(15 , 'R', 'G', 'B') }, 83cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB565BE, MKTAG(16 , 'B', 'G', 'R') }, 84cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR565BE, MKTAG(16 , 'R', 'G', 'B') }, 85cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB444LE, MKTAG('R', 'G', 'B', 12) }, 86cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR444LE, MKTAG('B', 'G', 'R', 12) }, 87cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB444BE, MKTAG(12 , 'B', 'G', 'R') }, 88cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR444BE, MKTAG(12 , 'R', 'G', 'B') }, 89cabdff1aSopenharmony_ci { AV_PIX_FMT_RGBA64LE, MKTAG('R', 'B', 'A', 64 ) }, 90cabdff1aSopenharmony_ci { AV_PIX_FMT_BGRA64LE, MKTAG('B', 'R', 'A', 64 ) }, 91cabdff1aSopenharmony_ci { AV_PIX_FMT_RGBA64BE, MKTAG(64 , 'R', 'B', 'A') }, 92cabdff1aSopenharmony_ci { AV_PIX_FMT_BGRA64BE, MKTAG(64 , 'B', 'R', 'A') }, 93cabdff1aSopenharmony_ci { AV_PIX_FMT_RGBA, MKTAG('R', 'G', 'B', 'A') }, 94cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB0, MKTAG('R', 'G', 'B', 0 ) }, 95cabdff1aSopenharmony_ci { AV_PIX_FMT_BGRA, MKTAG('B', 'G', 'R', 'A') }, 96cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR0, MKTAG('B', 'G', 'R', 0 ) }, 97cabdff1aSopenharmony_ci { AV_PIX_FMT_ABGR, MKTAG('A', 'B', 'G', 'R') }, 98cabdff1aSopenharmony_ci { AV_PIX_FMT_0BGR, MKTAG( 0 , 'B', 'G', 'R') }, 99cabdff1aSopenharmony_ci { AV_PIX_FMT_ARGB, MKTAG('A', 'R', 'G', 'B') }, 100cabdff1aSopenharmony_ci { AV_PIX_FMT_0RGB, MKTAG( 0 , 'R', 'G', 'B') }, 101cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB24, MKTAG('R', 'G', 'B', 24 ) }, 102cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR24, MKTAG('B', 'G', 'R', 24 ) }, 103cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV411P, MKTAG('4', '1', '1', 'P') }, 104cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P, MKTAG('4', '2', '2', 'P') }, 105cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ422P, MKTAG('4', '2', '2', 'P') }, 106cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV440P, MKTAG('4', '4', '0', 'P') }, 107cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ440P, MKTAG('4', '4', '0', 'P') }, 108cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P, MKTAG('4', '4', '4', 'P') }, 109cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ444P, MKTAG('4', '4', '4', 'P') }, 110cabdff1aSopenharmony_ci { AV_PIX_FMT_MONOWHITE,MKTAG('B', '1', 'W', '0') }, 111cabdff1aSopenharmony_ci { AV_PIX_FMT_MONOBLACK,MKTAG('B', '0', 'W', '1') }, 112cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR8, MKTAG('B', 'G', 'R', 8 ) }, 113cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB8, MKTAG('R', 'G', 'B', 8 ) }, 114cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR4, MKTAG('B', 'G', 'R', 4 ) }, 115cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB4, MKTAG('R', 'G', 'B', 4 ) }, 116cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB4_BYTE,MKTAG('B', '4', 'B', 'Y') }, 117cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR4_BYTE,MKTAG('R', '4', 'B', 'Y') }, 118cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB48LE, MKTAG('R', 'G', 'B', 48 ) }, 119cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB48BE, MKTAG( 48, 'R', 'G', 'B') }, 120cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR48LE, MKTAG('B', 'G', 'R', 48 ) }, 121cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR48BE, MKTAG( 48, 'B', 'G', 'R') }, 122cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY9LE, MKTAG('Y', '1', 0 , 9 ) }, 123cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY9BE, MKTAG( 9 , 0 , '1', 'Y') }, 124cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY10LE, MKTAG('Y', '1', 0 , 10 ) }, 125cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY10BE, MKTAG(10 , 0 , '1', 'Y') }, 126cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY12LE, MKTAG('Y', '1', 0 , 12 ) }, 127cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY12BE, MKTAG(12 , 0 , '1', 'Y') }, 128cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY14LE, MKTAG('Y', '1', 0 , 14 ) }, 129cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY14BE, MKTAG(14 , 0 , '1', 'Y') }, 130cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY16LE, MKTAG('Y', '1', 0 , 16 ) }, 131cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY16BE, MKTAG(16 , 0 , '1', 'Y') }, 132cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P9LE, MKTAG('Y', '3', 11 , 9 ) }, 133cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P9BE, MKTAG( 9 , 11 , '3', 'Y') }, 134cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P9LE, MKTAG('Y', '3', 10 , 9 ) }, 135cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P9BE, MKTAG( 9 , 10 , '3', 'Y') }, 136cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P9LE, MKTAG('Y', '3', 0 , 9 ) }, 137cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P9BE, MKTAG( 9 , 0 , '3', 'Y') }, 138cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P10LE, MKTAG('Y', '3', 11 , 10 ) }, 139cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P10BE, MKTAG(10 , 11 , '3', 'Y') }, 140cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P10LE, MKTAG('Y', '3', 10 , 10 ) }, 141cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P10BE, MKTAG(10 , 10 , '3', 'Y') }, 142cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P10LE, MKTAG('Y', '3', 0 , 10 ) }, 143cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P10BE, MKTAG(10 , 0 , '3', 'Y') }, 144cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P12LE, MKTAG('Y', '3', 11 , 12 ) }, 145cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P12BE, MKTAG(12 , 11 , '3', 'Y') }, 146cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P12LE, MKTAG('Y', '3', 10 , 12 ) }, 147cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P12BE, MKTAG(12 , 10 , '3', 'Y') }, 148cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P12LE, MKTAG('Y', '3', 0 , 12 ) }, 149cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P12BE, MKTAG(12 , 0 , '3', 'Y') }, 150cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P14LE, MKTAG('Y', '3', 11 , 14 ) }, 151cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P14BE, MKTAG(14 , 11 , '3', 'Y') }, 152cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P14LE, MKTAG('Y', '3', 10 , 14 ) }, 153cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P14BE, MKTAG(14 , 10 , '3', 'Y') }, 154cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P14LE, MKTAG('Y', '3', 0 , 14 ) }, 155cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P14BE, MKTAG(14 , 0 , '3', 'Y') }, 156cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P16LE, MKTAG('Y', '3', 11 , 16 ) }, 157cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P16BE, MKTAG(16 , 11 , '3', 'Y') }, 158cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P16LE, MKTAG('Y', '3', 10 , 16 ) }, 159cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P16BE, MKTAG(16 , 10 , '3', 'Y') }, 160cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P16LE, MKTAG('Y', '3', 0 , 16 ) }, 161cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P16BE, MKTAG(16 , 0 , '3', 'Y') }, 162cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA420P, MKTAG('Y', '4', 11 , 8 ) }, 163cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA422P, MKTAG('Y', '4', 10 , 8 ) }, 164cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA444P, MKTAG('Y', '4', 0 , 8 ) }, 165cabdff1aSopenharmony_ci { AV_PIX_FMT_YA8, MKTAG('Y', '2', 0 , 8 ) }, 166cabdff1aSopenharmony_ci { AV_PIX_FMT_PAL8, MKTAG('P', 'A', 'L', 8 ) }, 167cabdff1aSopenharmony_ci 168cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA420P9LE, MKTAG('Y', '4', 11 , 9 ) }, 169cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA420P9BE, MKTAG( 9 , 11 , '4', 'Y') }, 170cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA422P9LE, MKTAG('Y', '4', 10 , 9 ) }, 171cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA422P9BE, MKTAG( 9 , 10 , '4', 'Y') }, 172cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA444P9LE, MKTAG('Y', '4', 0 , 9 ) }, 173cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA444P9BE, MKTAG( 9 , 0 , '4', 'Y') }, 174cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA420P10LE, MKTAG('Y', '4', 11 , 10 ) }, 175cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA420P10BE, MKTAG(10 , 11 , '4', 'Y') }, 176cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA422P10LE, MKTAG('Y', '4', 10 , 10 ) }, 177cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA422P10BE, MKTAG(10 , 10 , '4', 'Y') }, 178cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA444P10LE, MKTAG('Y', '4', 0 , 10 ) }, 179cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA444P10BE, MKTAG(10 , 0 , '4', 'Y') }, 180cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA422P12LE, MKTAG('Y', '4', 10 , 12 ) }, 181cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA422P12BE, MKTAG(12 , 10 , '4', 'Y') }, 182cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA444P12LE, MKTAG('Y', '4', 0 , 12 ) }, 183cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA444P12BE, MKTAG(12 , 0 , '4', 'Y') }, 184cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA420P16LE, MKTAG('Y', '4', 11 , 16 ) }, 185cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA420P16BE, MKTAG(16 , 11 , '4', 'Y') }, 186cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA422P16LE, MKTAG('Y', '4', 10 , 16 ) }, 187cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA422P16BE, MKTAG(16 , 10 , '4', 'Y') }, 188cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA444P16LE, MKTAG('Y', '4', 0 , 16 ) }, 189cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA444P16BE, MKTAG(16 , 0 , '4', 'Y') }, 190cabdff1aSopenharmony_ci 191cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRP, MKTAG('G', '3', 00 , 8 ) }, 192cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRP9LE, MKTAG('G', '3', 00 , 9 ) }, 193cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRP9BE, MKTAG( 9 , 00 , '3', 'G') }, 194cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRP10LE, MKTAG('G', '3', 00 , 10 ) }, 195cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRP10BE, MKTAG(10 , 00 , '3', 'G') }, 196cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRP12LE, MKTAG('G', '3', 00 , 12 ) }, 197cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRP12BE, MKTAG(12 , 00 , '3', 'G') }, 198cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRP14LE, MKTAG('G', '3', 00 , 14 ) }, 199cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRP14BE, MKTAG(14 , 00 , '3', 'G') }, 200cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRP16LE, MKTAG('G', '3', 00 , 16 ) }, 201cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRP16BE, MKTAG(16 , 00 , '3', 'G') }, 202cabdff1aSopenharmony_ci 203cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRAP, MKTAG('G', '4', 00 , 8 ) }, 204cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRAP10LE, MKTAG('G', '4', 00 , 10 ) }, 205cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRAP10BE, MKTAG(10 , 00 , '4', 'G') }, 206cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRAP12LE, MKTAG('G', '4', 00 , 12 ) }, 207cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRAP12BE, MKTAG(12 , 00 , '4', 'G') }, 208cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRAP16LE, MKTAG('G', '4', 00 , 16 ) }, 209cabdff1aSopenharmony_ci { AV_PIX_FMT_GBRAP16BE, MKTAG(16 , 00 , '4', 'G') }, 210cabdff1aSopenharmony_ci 211cabdff1aSopenharmony_ci { AV_PIX_FMT_XYZ12LE, MKTAG('X', 'Y', 'Z' , 36 ) }, 212cabdff1aSopenharmony_ci { AV_PIX_FMT_XYZ12BE, MKTAG(36 , 'Z' , 'Y', 'X') }, 213cabdff1aSopenharmony_ci 214cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_BGGR8, MKTAG(0xBA, 'B', 'G', 8 ) }, 215cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_BGGR16LE, MKTAG(0xBA, 'B', 'G', 16 ) }, 216cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_BGGR16BE, MKTAG(16 , 'G', 'B', 0xBA) }, 217cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_RGGB8, MKTAG(0xBA, 'R', 'G', 8 ) }, 218cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_RGGB16LE, MKTAG(0xBA, 'R', 'G', 16 ) }, 219cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_RGGB16BE, MKTAG(16 , 'G', 'R', 0xBA) }, 220cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_GBRG8, MKTAG(0xBA, 'G', 'B', 8 ) }, 221cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_GBRG16LE, MKTAG(0xBA, 'G', 'B', 16 ) }, 222cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_GBRG16BE, MKTAG(16, 'B', 'G', 0xBA) }, 223cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_GRBG8, MKTAG(0xBA, 'G', 'R', 8 ) }, 224cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_GRBG16LE, MKTAG(0xBA, 'G', 'R', 16 ) }, 225cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_GRBG16BE, MKTAG(16, 'R', 'G', 0xBA) }, 226cabdff1aSopenharmony_ci 227cabdff1aSopenharmony_ci /* quicktime */ 228cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P, MKTAG('R', '4', '2', '0') }, /* Radius DV YUV PAL */ 229cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV411P, MKTAG('R', '4', '1', '1') }, /* Radius DV YUV NTSC */ 230cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('2', 'v', 'u', 'y') }, 231cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('2', 'V', 'u', 'y') }, 232cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', 'U', 'I') }, /* FIXME merge both fields */ 233cabdff1aSopenharmony_ci { AV_PIX_FMT_UYVY422, MKTAG('b', 'x', 'y', 'v') }, 234cabdff1aSopenharmony_ci { AV_PIX_FMT_YUYV422, MKTAG('y', 'u', 'v', '2') }, 235cabdff1aSopenharmony_ci { AV_PIX_FMT_YUYV422, MKTAG('y', 'u', 'v', 's') }, 236cabdff1aSopenharmony_ci { AV_PIX_FMT_YUYV422, MKTAG('D', 'V', 'O', 'O') }, /* Digital Voodoo SD 8 Bit */ 237cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB555LE,MKTAG('L', '5', '5', '5') }, 238cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB565LE,MKTAG('L', '5', '6', '5') }, 239cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB565BE,MKTAG('B', '5', '6', '5') }, 240cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR24, MKTAG('2', '4', 'B', 'G') }, 241cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR24, MKTAG('b', 'x', 'b', 'g') }, 242cabdff1aSopenharmony_ci { AV_PIX_FMT_BGRA, MKTAG('B', 'G', 'R', 'A') }, 243cabdff1aSopenharmony_ci { AV_PIX_FMT_RGBA, MKTAG('R', 'G', 'B', 'A') }, 244cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB24, MKTAG('b', 'x', 'r', 'g') }, 245cabdff1aSopenharmony_ci { AV_PIX_FMT_ABGR, MKTAG('A', 'B', 'G', 'R') }, 246cabdff1aSopenharmony_ci { AV_PIX_FMT_GRAY16BE,MKTAG('b', '1', '6', 'g') }, 247cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB48BE, MKTAG('b', '4', '8', 'r') }, 248cabdff1aSopenharmony_ci { AV_PIX_FMT_RGBA64BE,MKTAG('b', '6', '4', 'a') }, 249cabdff1aSopenharmony_ci { AV_PIX_FMT_BAYER_RGGB16BE, MKTAG('B', 'G', 'G', 'R') }, 250cabdff1aSopenharmony_ci 251cabdff1aSopenharmony_ci /* vlc */ 252cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV410P, MKTAG('I', '4', '1', '0') }, 253cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV411P, MKTAG('I', '4', '1', '1') }, 254cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P, MKTAG('I', '4', '2', '2') }, 255cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV440P, MKTAG('I', '4', '4', '0') }, 256cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P, MKTAG('I', '4', '4', '4') }, 257cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ420P, MKTAG('J', '4', '2', '0') }, 258cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ422P, MKTAG('J', '4', '2', '2') }, 259cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ440P, MKTAG('J', '4', '4', '0') }, 260cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVJ444P, MKTAG('J', '4', '4', '4') }, 261cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA444P, MKTAG('Y', 'U', 'V', 'A') }, 262cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA420P, MKTAG('I', '4', '0', 'A') }, 263cabdff1aSopenharmony_ci { AV_PIX_FMT_YUVA422P, MKTAG('I', '4', '2', 'A') }, 264cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB8, MKTAG('R', 'G', 'B', '2') }, 265cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB555LE, MKTAG('R', 'V', '1', '5') }, 266cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB565LE, MKTAG('R', 'V', '1', '6') }, 267cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR24, MKTAG('R', 'V', '2', '4') }, 268cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR0, MKTAG('R', 'V', '3', '2') }, 269cabdff1aSopenharmony_ci { AV_PIX_FMT_RGBA, MKTAG('A', 'V', '3', '2') }, 270cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P9LE, MKTAG('I', '0', '9', 'L') }, 271cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P9BE, MKTAG('I', '0', '9', 'B') }, 272cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P9LE, MKTAG('I', '2', '9', 'L') }, 273cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P9BE, MKTAG('I', '2', '9', 'B') }, 274cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P9LE, MKTAG('I', '4', '9', 'L') }, 275cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P9BE, MKTAG('I', '4', '9', 'B') }, 276cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P10LE, MKTAG('I', '0', 'A', 'L') }, 277cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P10BE, MKTAG('I', '0', 'A', 'B') }, 278cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P10LE, MKTAG('I', '2', 'A', 'L') }, 279cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P10BE, MKTAG('I', '2', 'A', 'B') }, 280cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P10LE, MKTAG('I', '4', 'A', 'L') }, 281cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P10BE, MKTAG('I', '4', 'A', 'B') }, 282cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P12LE, MKTAG('I', '0', 'C', 'L') }, 283cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P12BE, MKTAG('I', '0', 'C', 'B') }, 284cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P12LE, MKTAG('I', '2', 'C', 'L') }, 285cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV422P12BE, MKTAG('I', '2', 'C', 'B') }, 286cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P12LE, MKTAG('I', '4', 'C', 'L') }, 287cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P12BE, MKTAG('I', '4', 'C', 'B') }, 288cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P16LE, MKTAG('I', '0', 'F', 'L') }, 289cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV420P16BE, MKTAG('I', '0', 'F', 'B') }, 290cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P16LE, MKTAG('I', '4', 'F', 'L') }, 291cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P16BE, MKTAG('I', '4', 'F', 'B') }, 292cabdff1aSopenharmony_ci 293cabdff1aSopenharmony_ci /* special */ 294cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB565LE,MKTAG( 3 , 0 , 0 , 0 ) }, /* flipped RGB565LE */ 295cabdff1aSopenharmony_ci { AV_PIX_FMT_YUV444P, MKTAG('Y', 'V', '2', '4') }, /* YUV444P, swapped UV */ 296cabdff1aSopenharmony_ci 297cabdff1aSopenharmony_ci { AV_PIX_FMT_NONE, 0 }, 298cabdff1aSopenharmony_ci}; 299cabdff1aSopenharmony_ci 300cabdff1aSopenharmony_ciconst struct PixelFormatTag *avpriv_get_raw_pix_fmt_tags(void) 301cabdff1aSopenharmony_ci{ 302cabdff1aSopenharmony_ci return raw_pix_fmt_tags; 303cabdff1aSopenharmony_ci} 304cabdff1aSopenharmony_ci 305cabdff1aSopenharmony_ciunsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat fmt) 306cabdff1aSopenharmony_ci{ 307cabdff1aSopenharmony_ci const PixelFormatTag *tags = raw_pix_fmt_tags; 308cabdff1aSopenharmony_ci while (tags->pix_fmt >= 0) { 309cabdff1aSopenharmony_ci if (tags->pix_fmt == fmt) 310cabdff1aSopenharmony_ci return tags->fourcc; 311cabdff1aSopenharmony_ci tags++; 312cabdff1aSopenharmony_ci } 313cabdff1aSopenharmony_ci return 0; 314cabdff1aSopenharmony_ci} 315cabdff1aSopenharmony_ci 316cabdff1aSopenharmony_cistatic const PixelFormatTag pix_fmt_bps_avi[] = { 317cabdff1aSopenharmony_ci { AV_PIX_FMT_PAL8, 1 }, 318cabdff1aSopenharmony_ci { AV_PIX_FMT_PAL8, 2 }, 319cabdff1aSopenharmony_ci { AV_PIX_FMT_PAL8, 4 }, 320cabdff1aSopenharmony_ci { AV_PIX_FMT_PAL8, 8 }, 321cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB444LE, 12 }, 322cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB555LE, 15 }, 323cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB555LE, 16 }, 324cabdff1aSopenharmony_ci { AV_PIX_FMT_BGR24, 24 }, 325cabdff1aSopenharmony_ci { AV_PIX_FMT_BGRA, 32 }, 326cabdff1aSopenharmony_ci { AV_PIX_FMT_NONE, 0 }, 327cabdff1aSopenharmony_ci}; 328cabdff1aSopenharmony_ci 329cabdff1aSopenharmony_cistatic const PixelFormatTag pix_fmt_bps_mov[] = { 330cabdff1aSopenharmony_ci { AV_PIX_FMT_PAL8, 1 }, 331cabdff1aSopenharmony_ci { AV_PIX_FMT_PAL8, 2 }, 332cabdff1aSopenharmony_ci { AV_PIX_FMT_PAL8, 4 }, 333cabdff1aSopenharmony_ci { AV_PIX_FMT_PAL8, 8 }, 334cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB555BE, 16 }, 335cabdff1aSopenharmony_ci { AV_PIX_FMT_RGB24, 24 }, 336cabdff1aSopenharmony_ci { AV_PIX_FMT_ARGB, 32 }, 337cabdff1aSopenharmony_ci { AV_PIX_FMT_PAL8, 33 }, 338cabdff1aSopenharmony_ci { AV_PIX_FMT_NONE, 0 }, 339cabdff1aSopenharmony_ci}; 340cabdff1aSopenharmony_ci 341cabdff1aSopenharmony_cistatic enum AVPixelFormat find_pix_fmt(const PixelFormatTag *tags, 342cabdff1aSopenharmony_ci unsigned int fourcc) 343cabdff1aSopenharmony_ci{ 344cabdff1aSopenharmony_ci while (tags->pix_fmt != AV_PIX_FMT_NONE) { 345cabdff1aSopenharmony_ci if (tags->fourcc == fourcc) 346cabdff1aSopenharmony_ci return tags->pix_fmt; 347cabdff1aSopenharmony_ci tags++; 348cabdff1aSopenharmony_ci } 349cabdff1aSopenharmony_ci return AV_PIX_FMT_NONE; 350cabdff1aSopenharmony_ci} 351cabdff1aSopenharmony_ci 352cabdff1aSopenharmony_cienum AVPixelFormat avpriv_pix_fmt_find(enum PixelFormatTagLists list, 353cabdff1aSopenharmony_ci unsigned fourcc) 354cabdff1aSopenharmony_ci{ 355cabdff1aSopenharmony_ci const PixelFormatTag *tags; 356cabdff1aSopenharmony_ci 357cabdff1aSopenharmony_ci switch (list) { 358cabdff1aSopenharmony_ci case PIX_FMT_LIST_RAW: 359cabdff1aSopenharmony_ci tags = raw_pix_fmt_tags; 360cabdff1aSopenharmony_ci break; 361cabdff1aSopenharmony_ci case PIX_FMT_LIST_AVI: 362cabdff1aSopenharmony_ci tags = pix_fmt_bps_avi; 363cabdff1aSopenharmony_ci break; 364cabdff1aSopenharmony_ci case PIX_FMT_LIST_MOV: 365cabdff1aSopenharmony_ci tags = pix_fmt_bps_mov; 366cabdff1aSopenharmony_ci break; 367cabdff1aSopenharmony_ci } 368cabdff1aSopenharmony_ci return find_pix_fmt(tags, fourcc); 369cabdff1aSopenharmony_ci} 370