You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	| @@ -18,6 +18,7 @@ version <next>: | ||||
| - showpalette filter | ||||
| - Twofish symmetric block cipher | ||||
| - Support DNx100 (960x720@8) | ||||
| - removed libmpcodecs | ||||
|  | ||||
|  | ||||
| version 2.5: | ||||
|   | ||||
| @@ -13,7 +13,6 @@ configure to activate them. In this case, FFmpeg's license changes to GPL v2+. | ||||
| Specifically, the GPL parts of FFmpeg are: | ||||
|  | ||||
| - libpostproc | ||||
| - libmpcodecs | ||||
| - optional x86 optimizations in the files | ||||
|   libavcodec/x86/flac_dsp_gpl.asm | ||||
|   libavcodec/x86/idct_mmx.c | ||||
| @@ -38,7 +37,6 @@ Specifically, the GPL parts of FFmpeg are: | ||||
|     - vf_interlace.c | ||||
|     - vf_kerndeint.c | ||||
|     - vf_mcdeint.c | ||||
|     - vf_mp.c | ||||
|     - vf_mpdecimate.c | ||||
|     - vf_owdenoise.c | ||||
|     - vf_perspective.c | ||||
|   | ||||
							
								
								
									
										1
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								configure
									
									
									
									
										vendored
									
									
								
							| @@ -2597,7 +2597,6 @@ kerndeint_filter_deps="gpl" | ||||
| ladspa_filter_deps="ladspa dlopen" | ||||
| mcdeint_filter_deps="avcodec gpl" | ||||
| movie_filter_deps="avcodec avformat" | ||||
| mp_filter_deps="gpl avcodec swscale" | ||||
| mpdecimate_filter_deps="gpl" | ||||
| mpdecimate_filter_select="pixelutils" | ||||
| mptestsrc_filter_deps="gpl" | ||||
|   | ||||
| @@ -6263,35 +6263,6 @@ Higher values should result in a smoother motion vector field but less | ||||
| optimal individual vectors. Default value is 1. | ||||
| @end table | ||||
|  | ||||
| @section mp | ||||
|  | ||||
| Apply an MPlayer filter to the input video. | ||||
|  | ||||
| This filter provides a wrapper around some of the filters of | ||||
| MPlayer/MEncoder. | ||||
|  | ||||
| This wrapper is considered experimental. Some of the wrapped filters | ||||
| may not work properly and we may drop support for them, as they will | ||||
| be implemented natively into FFmpeg. Thus you should avoid | ||||
| depending on them when writing portable scripts. | ||||
|  | ||||
| The filter accepts the parameters: | ||||
| @var{filter_name}[:=]@var{filter_params} | ||||
|  | ||||
| @var{filter_name} is the name of a supported MPlayer filter, | ||||
| @var{filter_params} is a string containing the parameters accepted by | ||||
| the named filter. | ||||
|  | ||||
| The list of the currently supported filters follows: | ||||
| @table @var | ||||
| @end table | ||||
|  | ||||
| The parameter syntax and behavior for the listed filters are the same | ||||
| of the corresponding MPlayer filters. For detailed instructions check | ||||
| the "VIDEO FILTERS" section in the MPlayer manual. | ||||
|  | ||||
| See also mplayer(1), @url{http://www.mplayerhq.hu/}. | ||||
|  | ||||
| @section mpdecimate | ||||
|  | ||||
| Drop frames that do not differ greatly from the previous frame in | ||||
|   | ||||
| @@ -149,7 +149,6 @@ OBJS-$(CONFIG_LUTRGB_FILTER)                 += vf_lut.o | ||||
| OBJS-$(CONFIG_LUTYUV_FILTER)                 += vf_lut.o | ||||
| OBJS-$(CONFIG_MCDEINT_FILTER)                += vf_mcdeint.o | ||||
| OBJS-$(CONFIG_MERGEPLANES_FILTER)            += vf_mergeplanes.o framesync.o | ||||
| OBJS-$(CONFIG_MP_FILTER)                     += vf_mp.o | ||||
| OBJS-$(CONFIG_MPDECIMATE_FILTER)             += vf_mpdecimate.o | ||||
| OBJS-$(CONFIG_NEGATE_FILTER)                 += vf_lut.o | ||||
| OBJS-$(CONFIG_NOFORMAT_FILTER)               += vf_format.o | ||||
| @@ -226,9 +225,6 @@ OBJS-$(CONFIG_TESTSRC_FILTER)                += vsrc_testsrc.o | ||||
|  | ||||
| OBJS-$(CONFIG_NULLSINK_FILTER)               += vsink_nullsink.o | ||||
|  | ||||
| OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/mp_image.o | ||||
| OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/img_format.o | ||||
|  | ||||
| # multimedia filters | ||||
| OBJS-$(CONFIG_AVECTORSCOPE_FILTER)           += avf_avectorscope.o | ||||
| OBJS-$(CONFIG_CONCAT_FILTER)                 += avf_concat.o | ||||
|   | ||||
| @@ -165,7 +165,6 @@ void avfilter_register_all(void) | ||||
|     REGISTER_FILTER(LUTYUV,         lutyuv,         vf); | ||||
|     REGISTER_FILTER(MCDEINT,        mcdeint,        vf); | ||||
|     REGISTER_FILTER(MERGEPLANES,    mergeplanes,    vf); | ||||
|     REGISTER_FILTER(MP,             mp,             vf); | ||||
|     REGISTER_FILTER(MPDECIMATE,     mpdecimate,     vf); | ||||
|     REGISTER_FILTER(NEGATE,         negate,         vf); | ||||
|     REGISTER_FILTER(NOFORMAT,       noformat,       vf); | ||||
|   | ||||
| @@ -1,60 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of MPlayer. | ||||
|  * | ||||
|  * MPlayer is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * MPlayer is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License along | ||||
|  * with MPlayer; if not, write to the Free Software Foundation, Inc., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #ifndef MPLAYER_CPUDETECT_H | ||||
| #define MPLAYER_CPUDETECT_H | ||||
|  | ||||
| #define CPUTYPE_I386    3 | ||||
| #define CPUTYPE_I486    4 | ||||
| #define CPUTYPE_I586    5 | ||||
| #define CPUTYPE_I686    6 | ||||
|  | ||||
| #include "libavutil/x86_cpu.h" | ||||
|  | ||||
| typedef struct cpucaps_s { | ||||
|     int cpuType; | ||||
|     int cpuModel; | ||||
|     int cpuStepping; | ||||
|     int hasMMX; | ||||
|     int hasMMX2; | ||||
|     int has3DNow; | ||||
|     int has3DNowExt; | ||||
|     int hasSSE; | ||||
|     int hasSSE2; | ||||
|     int hasSSE3; | ||||
|     int hasSSSE3; | ||||
|     int hasSSE4; | ||||
|     int hasSSE42; | ||||
|     int hasSSE4a; | ||||
|     int hasAVX; | ||||
|     int isX86; | ||||
|     unsigned cl_size; /* size of cache line */ | ||||
|     int hasAltiVec; | ||||
|     int hasTSC; | ||||
| } CpuCaps; | ||||
|  | ||||
| extern CpuCaps ff_gCpuCaps; | ||||
|  | ||||
| void ff_do_cpuid(unsigned int ax, unsigned int *p); | ||||
|  | ||||
| void ff_GetCpuCaps(CpuCaps *caps); | ||||
|  | ||||
| /* returned value is malloc()'ed so free() it after use */ | ||||
| char *ff_GetCpuFriendlyName(unsigned int regs[], unsigned int regs2[]); | ||||
|  | ||||
| #endif /* MPLAYER_CPUDETECT_H */ | ||||
| @@ -1,244 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of MPlayer. | ||||
|  * | ||||
|  * MPlayer is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * MPlayer is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License along | ||||
|  * with MPlayer; if not, write to the Free Software Foundation, Inc., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #include "config.h" | ||||
| #include "img_format.h" | ||||
| #include "stdio.h" | ||||
| #include "libavutil/bswap.h" | ||||
|  | ||||
| const char *ff_vo_format_name(int format) | ||||
| { | ||||
|     static char unknown_format[20]; | ||||
|     switch(format) | ||||
|     { | ||||
|     case IMGFMT_RGB1:    return "RGB 1-bit"; | ||||
|     case IMGFMT_RGB4:    return "RGB 4-bit"; | ||||
|     case IMGFMT_RG4B:    return "RGB 4-bit per byte"; | ||||
|     case IMGFMT_RGB8:    return "RGB 8-bit"; | ||||
|     case IMGFMT_RGB12:   return "RGB 12-bit"; | ||||
|     case IMGFMT_RGB15:   return "RGB 15-bit"; | ||||
|     case IMGFMT_RGB16:   return "RGB 16-bit"; | ||||
|     case IMGFMT_RGB24:   return "RGB 24-bit"; | ||||
| //  case IMGFMT_RGB32:   return "RGB 32-bit"; | ||||
|     case IMGFMT_RGB48LE: return "RGB 48-bit LE"; | ||||
|     case IMGFMT_RGB48BE: return "RGB 48-bit BE"; | ||||
|     case IMGFMT_RGB64LE: return "RGB 64-bit LE"; | ||||
|     case IMGFMT_RGB64BE: return "RGB 64-bit BE"; | ||||
|     case IMGFMT_BGR1:    return "BGR 1-bit"; | ||||
|     case IMGFMT_BGR4:    return "BGR 4-bit"; | ||||
|     case IMGFMT_BG4B:    return "BGR 4-bit per byte"; | ||||
|     case IMGFMT_BGR8:    return "BGR 8-bit"; | ||||
|     case IMGFMT_BGR12:   return "BGR 12-bit"; | ||||
|     case IMGFMT_BGR15:   return "BGR 15-bit"; | ||||
|     case IMGFMT_BGR16:   return "BGR 16-bit"; | ||||
|     case IMGFMT_BGR24:   return "BGR 24-bit"; | ||||
| //  case IMGFMT_BGR32:   return "BGR 32-bit"; | ||||
|     case IMGFMT_ABGR:    return "ABGR"; | ||||
|     case IMGFMT_BGRA:    return "BGRA"; | ||||
|     case IMGFMT_ARGB:    return "ARGB"; | ||||
|     case IMGFMT_RGBA:    return "RGBA"; | ||||
|     case IMGFMT_XYZ12LE: return "XYZ 36-bit LE"; | ||||
|     case IMGFMT_XYZ12BE: return "XYZ 36-bit BE"; | ||||
|     case IMGFMT_GBR24P:  return "Planar GBR 24-bit"; | ||||
|     case IMGFMT_GBR12P:  return "Planar GBR 36-bit"; | ||||
|     case IMGFMT_GBR14P:  return "Planar GBR 42-bit"; | ||||
|     case IMGFMT_YVU9:    return "Planar YVU9"; | ||||
|     case IMGFMT_IF09:    return "Planar IF09"; | ||||
|     case IMGFMT_YV12:    return "Planar YV12"; | ||||
|     case IMGFMT_I420:    return "Planar I420"; | ||||
|     case IMGFMT_IYUV:    return "Planar IYUV"; | ||||
|     case IMGFMT_CLPL:    return "Planar CLPL"; | ||||
|     case IMGFMT_Y800:    return "Planar Y800"; | ||||
|     case IMGFMT_Y8:      return "Planar Y8"; | ||||
|     case IMGFMT_Y8A:     return "Planar Y8 with alpha"; | ||||
|     case IMGFMT_Y16_LE:  return "Planar Y16 little-endian"; | ||||
|     case IMGFMT_Y16_BE:  return "Planar Y16 big-endian"; | ||||
|     case IMGFMT_420P16_LE: return "Planar 420P 16-bit little-endian"; | ||||
|     case IMGFMT_420P16_BE: return "Planar 420P 16-bit big-endian"; | ||||
|     case IMGFMT_420P14_LE: return "Planar 420P 14-bit little-endian"; | ||||
|     case IMGFMT_420P14_BE: return "Planar 420P 14-bit big-endian"; | ||||
|     case IMGFMT_420P12_LE: return "Planar 420P 12-bit little-endian"; | ||||
|     case IMGFMT_420P12_BE: return "Planar 420P 12-bit big-endian"; | ||||
|     case IMGFMT_420P10_LE: return "Planar 420P 10-bit little-endian"; | ||||
|     case IMGFMT_420P10_BE: return "Planar 420P 10-bit big-endian"; | ||||
|     case IMGFMT_420P9_LE:  return "Planar 420P 9-bit little-endian"; | ||||
|     case IMGFMT_420P9_BE:  return "Planar 420P 9-bit big-endian"; | ||||
|     case IMGFMT_422P16_LE: return "Planar 422P 16-bit little-endian"; | ||||
|     case IMGFMT_422P16_BE: return "Planar 422P 16-bit big-endian"; | ||||
|     case IMGFMT_422P14_LE: return "Planar 422P 14-bit little-endian"; | ||||
|     case IMGFMT_422P14_BE: return "Planar 422P 14-bit big-endian"; | ||||
|     case IMGFMT_422P12_LE: return "Planar 422P 12-bit little-endian"; | ||||
|     case IMGFMT_422P12_BE: return "Planar 422P 12-bit big-endian"; | ||||
|     case IMGFMT_422P10_LE: return "Planar 422P 10-bit little-endian"; | ||||
|     case IMGFMT_422P10_BE: return "Planar 422P 10-bit big-endian"; | ||||
|     case IMGFMT_422P9_LE:  return "Planar 422P 9-bit little-endian"; | ||||
|     case IMGFMT_422P9_BE:  return "Planar 422P 9-bit big-endian"; | ||||
|     case IMGFMT_444P16_LE: return "Planar 444P 16-bit little-endian"; | ||||
|     case IMGFMT_444P16_BE: return "Planar 444P 16-bit big-endian"; | ||||
|     case IMGFMT_444P14_LE: return "Planar 444P 14-bit little-endian"; | ||||
|     case IMGFMT_444P14_BE: return "Planar 444P 14-bit big-endian"; | ||||
|     case IMGFMT_444P12_LE: return "Planar 444P 12-bit little-endian"; | ||||
|     case IMGFMT_444P12_BE: return "Planar 444P 12-bit big-endian"; | ||||
|     case IMGFMT_444P10_LE: return "Planar 444P 10-bit little-endian"; | ||||
|     case IMGFMT_444P10_BE: return "Planar 444P 10-bit big-endian"; | ||||
|     case IMGFMT_444P9_LE:  return "Planar 444P 9-bit little-endian"; | ||||
|     case IMGFMT_444P9_BE:  return "Planar 444P 9-bit big-endian"; | ||||
|     case IMGFMT_420A: return "Planar 420P with alpha"; | ||||
|     case IMGFMT_444P: return "Planar 444P"; | ||||
|     case IMGFMT_444A: return "Planar 444P with alpha"; | ||||
|     case IMGFMT_422P: return "Planar 422P"; | ||||
|     case IMGFMT_422A: return "Planar 422P with alpha"; | ||||
|     case IMGFMT_411P: return "Planar 411P"; | ||||
|     case IMGFMT_440P: return "Planar 440P"; | ||||
|     case IMGFMT_NV12: return "Planar NV12"; | ||||
|     case IMGFMT_NV21: return "Planar NV21"; | ||||
|     case IMGFMT_HM12: return "Planar NV12 Macroblock"; | ||||
|     case IMGFMT_IUYV: return "Packed IUYV"; | ||||
|     case IMGFMT_IY41: return "Packed IY41"; | ||||
|     case IMGFMT_IYU1: return "Packed IYU1"; | ||||
|     case IMGFMT_IYU2: return "Packed IYU2"; | ||||
|     case IMGFMT_UYVY: return "Packed UYVY"; | ||||
|     case IMGFMT_UYNV: return "Packed UYNV"; | ||||
|     case IMGFMT_cyuv: return "Packed CYUV"; | ||||
|     case IMGFMT_Y422: return "Packed Y422"; | ||||
|     case IMGFMT_YUY2: return "Packed YUY2"; | ||||
|     case IMGFMT_YUNV: return "Packed YUNV"; | ||||
|     case IMGFMT_YVYU: return "Packed YVYU"; | ||||
|     case IMGFMT_Y41P: return "Packed Y41P"; | ||||
|     case IMGFMT_Y211: return "Packed Y211"; | ||||
|     case IMGFMT_Y41T: return "Packed Y41T"; | ||||
|     case IMGFMT_Y42T: return "Packed Y42T"; | ||||
|     case IMGFMT_V422: return "Packed V422"; | ||||
|     case IMGFMT_V655: return "Packed V655"; | ||||
|     case IMGFMT_CLJR: return "Packed CLJR"; | ||||
|     case IMGFMT_YUVP: return "Packed YUVP"; | ||||
|     case IMGFMT_UYVP: return "Packed UYVP"; | ||||
|     case IMGFMT_MPEGPES:         return "Mpeg PES"; | ||||
|     case IMGFMT_ZRMJPEGNI:       return "Zoran MJPEG non-interlaced"; | ||||
|     case IMGFMT_ZRMJPEGIT:       return "Zoran MJPEG top field first"; | ||||
|     case IMGFMT_ZRMJPEGIB:       return "Zoran MJPEG bottom field first"; | ||||
|     case IMGFMT_XVMC_MOCO_MPEG2: return "MPEG1/2 Motion Compensation"; | ||||
|     case IMGFMT_XVMC_IDCT_MPEG2: return "MPEG1/2 Motion Compensation and IDCT"; | ||||
|     case IMGFMT_VDPAU_MPEG1:     return "MPEG1 VDPAU acceleration"; | ||||
|     case IMGFMT_VDPAU_MPEG2:     return "MPEG2 VDPAU acceleration"; | ||||
|     case IMGFMT_VDPAU_H264:      return "H.264 VDPAU acceleration"; | ||||
|     case IMGFMT_VDPAU_MPEG4:     return "MPEG-4 Part 2 VDPAU acceleration"; | ||||
|     case IMGFMT_VDPAU_WMV3:      return "WMV3 VDPAU acceleration"; | ||||
|     case IMGFMT_VDPAU_VC1:       return "VC1 VDPAU acceleration"; | ||||
|     } | ||||
|     snprintf(unknown_format,20,"Unknown 0x%04x",format); | ||||
|     return unknown_format; | ||||
| } | ||||
|  | ||||
| int ff_mp_get_chroma_shift(int format, int *x_shift, int *y_shift, int *component_bits) | ||||
| { | ||||
|     int xs = 0, ys = 0; | ||||
|     int bpp; | ||||
|     int err = 0; | ||||
|     int bits = 8; | ||||
|     if ((format & 0xff0000f0) == 0x34000050) | ||||
|         format = av_bswap32(format); | ||||
|     if ((format & 0xf00000ff) == 0x50000034) { | ||||
|         switch (format >> 24) { | ||||
|         case 0x50: | ||||
|             break; | ||||
|         case 0x51: | ||||
|             bits = 16; | ||||
|             break; | ||||
|         case 0x52: | ||||
|             bits = 10; | ||||
|             break; | ||||
|         case 0x53: | ||||
|             bits = 9; | ||||
|             break; | ||||
|         default: | ||||
|             err = 1; | ||||
|             break; | ||||
|         } | ||||
|         switch (format & 0x00ffffff) { | ||||
|         case 0x00343434: // 444 | ||||
|             xs = 0; | ||||
|             ys = 0; | ||||
|             break; | ||||
|         case 0x00323234: // 422 | ||||
|             xs = 1; | ||||
|             ys = 0; | ||||
|             break; | ||||
|         case 0x00303234: // 420 | ||||
|             xs = 1; | ||||
|             ys = 1; | ||||
|             break; | ||||
|         case 0x00313134: // 411 | ||||
|             xs = 2; | ||||
|             ys = 0; | ||||
|             break; | ||||
|         case 0x00303434: // 440 | ||||
|             xs = 0; | ||||
|             ys = 1; | ||||
|             break; | ||||
|         default: | ||||
|             err = 1; | ||||
|             break; | ||||
|         } | ||||
|     } else switch (format) { | ||||
|     case IMGFMT_444A: | ||||
|         xs = 0; | ||||
|         ys = 0; | ||||
|         break; | ||||
|     case IMGFMT_422A: | ||||
|         xs = 1; | ||||
|         ys = 0; | ||||
|         break; | ||||
|     case IMGFMT_420A: | ||||
|     case IMGFMT_I420: | ||||
|     case IMGFMT_IYUV: | ||||
|     case IMGFMT_YV12: | ||||
|         xs = 1; | ||||
|         ys = 1; | ||||
|         break; | ||||
|     case IMGFMT_IF09: | ||||
|     case IMGFMT_YVU9: | ||||
|         xs = 2; | ||||
|         ys = 2; | ||||
|         break; | ||||
|     case IMGFMT_Y8: | ||||
|     case IMGFMT_Y800: | ||||
|         xs = 31; | ||||
|         ys = 31; | ||||
|         break; | ||||
|     case IMGFMT_NV12: | ||||
|     case IMGFMT_NV21: | ||||
|         xs = 1; | ||||
|         ys = 1; | ||||
|         // TODO: allowing this though currently breaks | ||||
|         // things all over the place. | ||||
|         err = 1; | ||||
|         break; | ||||
|     default: | ||||
|         err = 1; | ||||
|         break; | ||||
|     } | ||||
|     if (x_shift) *x_shift = xs; | ||||
|     if (y_shift) *y_shift = ys; | ||||
|     if (component_bits) *component_bits = bits; | ||||
|     bpp = 8 + ((16 >> xs) >> ys); | ||||
|     if (format == IMGFMT_420A || format == IMGFMT_422A || format == IMGFMT_444A) | ||||
|         bpp += 8; | ||||
|     bpp *= (bits + 7) >> 3; | ||||
|     return err ? 0 : bpp; | ||||
| } | ||||
| @@ -1,309 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of MPlayer. | ||||
|  * | ||||
|  * MPlayer is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * MPlayer is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License along | ||||
|  * with MPlayer; if not, write to the Free Software Foundation, Inc., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #ifndef MPLAYER_IMG_FORMAT_H | ||||
| #define MPLAYER_IMG_FORMAT_H | ||||
|  | ||||
| #include "config.h" | ||||
|  | ||||
| /* RGB/BGR Formats */ | ||||
|  | ||||
| #define IMGFMT_RGB_MASK 0xFFFFFF00 | ||||
| #define IMGFMT_RGB (('R'<<24)|('G'<<16)|('B'<<8)) | ||||
| #define IMGFMT_RGB1  (IMGFMT_RGB|1) | ||||
| #define IMGFMT_RGB4  (IMGFMT_RGB|4) | ||||
| #define IMGFMT_RGB4_CHAR  (IMGFMT_RGB|4|128) // RGB4 with 1 pixel per byte | ||||
| #define IMGFMT_RGB8  (IMGFMT_RGB|8) | ||||
| #define IMGFMT_RGB12 (IMGFMT_RGB|12) | ||||
| #define IMGFMT_RGB15 (IMGFMT_RGB|15) | ||||
| #define IMGFMT_RGB16 (IMGFMT_RGB|16) | ||||
| #define IMGFMT_RGB24 (IMGFMT_RGB|24) | ||||
| #define IMGFMT_RGB32 (IMGFMT_RGB|32) | ||||
| #define IMGFMT_RGB48LE (IMGFMT_RGB|48) | ||||
| #define IMGFMT_RGB48BE (IMGFMT_RGB|48|128) | ||||
| #define IMGFMT_RGB64LE (IMGFMT_RGB|64) | ||||
| #define IMGFMT_RGB64BE (IMGFMT_RGB|64|128) | ||||
|  | ||||
| #define IMGFMT_BGR_MASK 0xFFFFFF00 | ||||
| #define IMGFMT_BGR (('B'<<24)|('G'<<16)|('R'<<8)) | ||||
| #define IMGFMT_BGR1  (IMGFMT_BGR|1) | ||||
| #define IMGFMT_BGR4  (IMGFMT_BGR|4) | ||||
| #define IMGFMT_BGR4_CHAR (IMGFMT_BGR|4|128) // BGR4 with 1 pixel per byte | ||||
| #define IMGFMT_BGR8  (IMGFMT_BGR|8) | ||||
| #define IMGFMT_BGR12 (IMGFMT_BGR|12) | ||||
| #define IMGFMT_BGR15 (IMGFMT_BGR|15) | ||||
| #define IMGFMT_BGR16 (IMGFMT_BGR|16) | ||||
| #define IMGFMT_BGR24 (IMGFMT_BGR|24) | ||||
| #define IMGFMT_BGR32 (IMGFMT_BGR|32) | ||||
|  | ||||
| #define IMGFMT_XYZ_MASK 0xFFFFFF00 | ||||
| #define IMGFMT_XYZ (('X'<<24)|('Y'<<16)|('Z'<<8)) | ||||
| #define IMGFMT_XYZ12LE (IMGFMT_XYZ|12) | ||||
| #define IMGFMT_XYZ12BE (IMGFMT_XYZ|12|128) | ||||
|  | ||||
| #define IMGFMT_GBR24P (('G'<<24)|('B'<<16)|('R'<<8)|24) | ||||
| #define IMGFMT_GBR12PLE (('G'<<24)|('B'<<16)|('R'<<8)|36) | ||||
| #define IMGFMT_GBR12PBE (('G'<<24)|('B'<<16)|('R'<<8)|36|128) | ||||
| #define IMGFMT_GBR14PLE (('G'<<24)|('B'<<16)|('R'<<8)|42) | ||||
| #define IMGFMT_GBR14PBE (('G'<<24)|('B'<<16)|('R'<<8)|42|128) | ||||
|  | ||||
| #if HAVE_BIGENDIAN | ||||
| #define IMGFMT_ABGR    IMGFMT_RGB32 | ||||
| #define IMGFMT_BGRA    (IMGFMT_RGB32|128) | ||||
| #define IMGFMT_ARGB    IMGFMT_BGR32 | ||||
| #define IMGFMT_RGBA    (IMGFMT_BGR32|128) | ||||
| #define IMGFMT_RGB64NE IMGFMT_RGB64BE | ||||
| #define IMGFMT_RGB48NE IMGFMT_RGB48BE | ||||
| #define IMGFMT_RGB12BE IMGFMT_RGB12 | ||||
| #define IMGFMT_RGB12LE (IMGFMT_RGB12|128) | ||||
| #define IMGFMT_RGB15BE IMGFMT_RGB15 | ||||
| #define IMGFMT_RGB15LE (IMGFMT_RGB15|128) | ||||
| #define IMGFMT_RGB16BE IMGFMT_RGB16 | ||||
| #define IMGFMT_RGB16LE (IMGFMT_RGB16|128) | ||||
| #define IMGFMT_BGR12BE IMGFMT_BGR12 | ||||
| #define IMGFMT_BGR12LE (IMGFMT_BGR12|128) | ||||
| #define IMGFMT_BGR15BE IMGFMT_BGR15 | ||||
| #define IMGFMT_BGR15LE (IMGFMT_BGR15|128) | ||||
| #define IMGFMT_BGR16BE IMGFMT_BGR16 | ||||
| #define IMGFMT_BGR16LE (IMGFMT_BGR16|128) | ||||
| #define IMGFMT_XYZ12  IMGFMT_XYZ12BE | ||||
| #define IMGFMT_GBR12P IMGFMT_GBR12PBE | ||||
| #define IMGFMT_GBR14P IMGFMT_GBR14PBE | ||||
| #else | ||||
| #define IMGFMT_ABGR (IMGFMT_BGR32|128) | ||||
| #define IMGFMT_BGRA IMGFMT_BGR32 | ||||
| #define IMGFMT_ARGB (IMGFMT_RGB32|128) | ||||
| #define IMGFMT_RGBA IMGFMT_RGB32 | ||||
| #define IMGFMT_RGB64NE IMGFMT_RGB64LE | ||||
| #define IMGFMT_RGB48NE IMGFMT_RGB48LE | ||||
| #define IMGFMT_RGB12BE (IMGFMT_RGB12|128) | ||||
| #define IMGFMT_RGB12LE IMGFMT_RGB12 | ||||
| #define IMGFMT_RGB15BE (IMGFMT_RGB15|128) | ||||
| #define IMGFMT_RGB15LE IMGFMT_RGB15 | ||||
| #define IMGFMT_RGB16BE (IMGFMT_RGB16|128) | ||||
| #define IMGFMT_RGB16LE IMGFMT_RGB16 | ||||
| #define IMGFMT_BGR12BE (IMGFMT_BGR12|128) | ||||
| #define IMGFMT_BGR12LE IMGFMT_BGR12 | ||||
| #define IMGFMT_BGR15BE (IMGFMT_BGR15|128) | ||||
| #define IMGFMT_BGR15LE IMGFMT_BGR15 | ||||
| #define IMGFMT_BGR16BE (IMGFMT_BGR16|128) | ||||
| #define IMGFMT_BGR16LE IMGFMT_BGR16 | ||||
| #define IMGFMT_XYZ12  IMGFMT_XYZ12LE | ||||
| #define IMGFMT_GBR12P IMGFMT_GBR12PLE | ||||
| #define IMGFMT_GBR14P IMGFMT_GBR14PLE | ||||
| #endif | ||||
|  | ||||
| /* old names for compatibility */ | ||||
| #define IMGFMT_RG4B  IMGFMT_RGB4_CHAR | ||||
| #define IMGFMT_BG4B  IMGFMT_BGR4_CHAR | ||||
|  | ||||
| #define IMGFMT_IS_RGB(fmt) (((fmt)&IMGFMT_RGB_MASK)==IMGFMT_RGB) | ||||
| #define IMGFMT_IS_BGR(fmt) (((fmt)&IMGFMT_BGR_MASK)==IMGFMT_BGR) | ||||
| #define IMGFMT_IS_XYZ(fmt) (((fmt)&IMGFMT_XYZ_MASK)==IMGFMT_XYZ) | ||||
|  | ||||
| #define IMGFMT_RGB_DEPTH(fmt) ((fmt)&0x7F) | ||||
| #define IMGFMT_BGR_DEPTH(fmt) ((fmt)&0x7F) | ||||
| #define IMGFMT_XYZ_DEPTH(fmt) ((fmt)&0x7F) | ||||
|  | ||||
|  | ||||
| /* Planar YUV Formats */ | ||||
|  | ||||
| #define IMGFMT_YVU9 0x39555659 | ||||
| #define IMGFMT_IF09 0x39304649 | ||||
| #define IMGFMT_YV12 0x32315659 | ||||
| #define IMGFMT_I420 0x30323449 | ||||
| #define IMGFMT_IYUV 0x56555949 | ||||
| #define IMGFMT_CLPL 0x4C504C43 | ||||
| #define IMGFMT_Y800 0x30303859 | ||||
| #define IMGFMT_Y8   0x20203859 | ||||
| #define IMGFMT_NV12 0x3231564E | ||||
| #define IMGFMT_NV21 0x3132564E | ||||
| #define IMGFMT_Y16_LE 0x20363159 | ||||
|  | ||||
| /* unofficial Planar Formats, FIXME if official 4CC exists */ | ||||
| #define IMGFMT_444P 0x50343434 | ||||
| #define IMGFMT_422P 0x50323234 | ||||
| #define IMGFMT_411P 0x50313134 | ||||
| #define IMGFMT_440P 0x50303434 | ||||
| #define IMGFMT_HM12 0x32314D48 | ||||
| #define IMGFMT_Y16_BE 0x59313620 | ||||
|  | ||||
| // Gray with alpha | ||||
| #define IMGFMT_Y8A 0x59320008 | ||||
| // 4:2:0 planar with alpha | ||||
| #define IMGFMT_420A 0x41303234 | ||||
| // 4:2:2 planar with alpha | ||||
| #define IMGFMT_422A 0x41323234 | ||||
| // 4:4:4 planar with alpha | ||||
| #define IMGFMT_444A 0x41343434 | ||||
|  | ||||
| #define IMGFMT_444P16_LE 0x51343434 | ||||
| #define IMGFMT_444P16_BE 0x34343451 | ||||
| #define IMGFMT_444P14_LE 0x54343434 | ||||
| #define IMGFMT_444P14_BE 0x34343454 | ||||
| #define IMGFMT_444P12_LE 0x55343434 | ||||
| #define IMGFMT_444P12_BE 0x34343455 | ||||
| #define IMGFMT_444P10_LE 0x52343434 | ||||
| #define IMGFMT_444P10_BE 0x34343452 | ||||
| #define IMGFMT_444P9_LE  0x53343434 | ||||
| #define IMGFMT_444P9_BE  0x34343453 | ||||
| #define IMGFMT_422P16_LE 0x51323234 | ||||
| #define IMGFMT_422P16_BE 0x34323251 | ||||
| #define IMGFMT_422P14_LE 0x54323234 | ||||
| #define IMGFMT_422P14_BE 0x34323254 | ||||
| #define IMGFMT_422P12_LE 0x55323234 | ||||
| #define IMGFMT_422P12_BE 0x34323255 | ||||
| #define IMGFMT_422P10_LE 0x52323234 | ||||
| #define IMGFMT_422P10_BE 0x34323252 | ||||
| #define IMGFMT_422P9_LE  0x53323234 | ||||
| #define IMGFMT_422P9_BE  0x34323253 | ||||
| #define IMGFMT_420P16_LE 0x51303234 | ||||
| #define IMGFMT_420P16_BE 0x34323051 | ||||
| #define IMGFMT_420P14_LE 0x54303234 | ||||
| #define IMGFMT_420P14_BE 0x34323054 | ||||
| #define IMGFMT_420P12_LE 0x55303234 | ||||
| #define IMGFMT_420P12_BE 0x34323055 | ||||
| #define IMGFMT_420P10_LE 0x52303234 | ||||
| #define IMGFMT_420P10_BE 0x34323052 | ||||
| #define IMGFMT_420P9_LE  0x53303234 | ||||
| #define IMGFMT_420P9_BE  0x34323053 | ||||
| #if HAVE_BIGENDIAN | ||||
| #define IMGFMT_444P16 IMGFMT_444P16_BE | ||||
| #define IMGFMT_444P14 IMGFMT_444P14_BE | ||||
| #define IMGFMT_444P12 IMGFMT_444P12_BE | ||||
| #define IMGFMT_444P10 IMGFMT_444P10_BE | ||||
| #define IMGFMT_444P9  IMGFMT_444P9_BE | ||||
| #define IMGFMT_422P16 IMGFMT_422P16_BE | ||||
| #define IMGFMT_422P14 IMGFMT_422P14_BE | ||||
| #define IMGFMT_422P12 IMGFMT_422P12_BE | ||||
| #define IMGFMT_422P10 IMGFMT_422P10_BE | ||||
| #define IMGFMT_422P9  IMGFMT_422P9_BE | ||||
| #define IMGFMT_420P16 IMGFMT_420P16_BE | ||||
| #define IMGFMT_420P14 IMGFMT_420P14_BE | ||||
| #define IMGFMT_420P12 IMGFMT_420P12_BE | ||||
| #define IMGFMT_420P10 IMGFMT_420P10_BE | ||||
| #define IMGFMT_420P9  IMGFMT_420P9_BE | ||||
| #define IMGFMT_Y16    IMGFMT_Y16_BE | ||||
| #define IMGFMT_IS_YUVP16_NE(fmt) IMGFMT_IS_YUVP16_BE(fmt) | ||||
| #else | ||||
| #define IMGFMT_444P16 IMGFMT_444P16_LE | ||||
| #define IMGFMT_444P14 IMGFMT_444P14_LE | ||||
| #define IMGFMT_444P12 IMGFMT_444P12_LE | ||||
| #define IMGFMT_444P10 IMGFMT_444P10_LE | ||||
| #define IMGFMT_444P9  IMGFMT_444P9_LE | ||||
| #define IMGFMT_422P16 IMGFMT_422P16_LE | ||||
| #define IMGFMT_422P14 IMGFMT_422P14_LE | ||||
| #define IMGFMT_422P12 IMGFMT_422P12_LE | ||||
| #define IMGFMT_422P10 IMGFMT_422P10_LE | ||||
| #define IMGFMT_422P9  IMGFMT_422P9_LE | ||||
| #define IMGFMT_420P16 IMGFMT_420P16_LE | ||||
| #define IMGFMT_420P14 IMGFMT_420P14_LE | ||||
| #define IMGFMT_420P12 IMGFMT_420P12_LE | ||||
| #define IMGFMT_420P10 IMGFMT_420P10_LE | ||||
| #define IMGFMT_420P9  IMGFMT_420P9_LE | ||||
| #define IMGFMT_Y16    IMGFMT_Y16_LE | ||||
| #define IMGFMT_IS_YUVP16_NE(fmt) IMGFMT_IS_YUVP16_LE(fmt) | ||||
| #endif | ||||
|  | ||||
| #define IMGFMT_IS_YUVP16_LE(fmt) (((fmt - 0x51000034) & 0xfc0000ff) == 0) | ||||
| #define IMGFMT_IS_YUVP16_BE(fmt) (((fmt - 0x34000051) & 0xff0000fc) == 0) | ||||
| #define IMGFMT_IS_YUVP16(fmt)    (IMGFMT_IS_YUVP16_LE(fmt) || IMGFMT_IS_YUVP16_BE(fmt)) | ||||
|  | ||||
| /** | ||||
|  * \brief Find the corresponding full 16 bit format, i.e. IMGFMT_420P10_LE -> IMGFMT_420P16_LE | ||||
|  * \return normalized format ID or 0 if none exists. | ||||
|  */ | ||||
| static inline int normalize_yuvp16(int fmt) { | ||||
|     if (IMGFMT_IS_YUVP16_LE(fmt)) | ||||
|         return (fmt & 0x00ffffff) | 0x51000000; | ||||
|     if (IMGFMT_IS_YUVP16_BE(fmt)) | ||||
|         return (fmt & 0xffffff00) | 0x00000051; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| /* Packed YUV Formats */ | ||||
|  | ||||
| #define IMGFMT_IUYV 0x56595549 // Interlaced UYVY | ||||
| #define IMGFMT_IY41 0x31435949 // Interlaced Y41P | ||||
| #define IMGFMT_IYU1 0x31555949 | ||||
| #define IMGFMT_IYU2 0x32555949 | ||||
| #define IMGFMT_UYVY 0x59565955 | ||||
| #define IMGFMT_UYNV 0x564E5955 // Exactly same as UYVY | ||||
| #define IMGFMT_cyuv 0x76757963 // upside-down UYVY | ||||
| #define IMGFMT_Y422 0x32323459 // Exactly same as UYVY | ||||
| #define IMGFMT_YUY2 0x32595559 | ||||
| #define IMGFMT_YUNV 0x564E5559 // Exactly same as YUY2 | ||||
| #define IMGFMT_YVYU 0x55595659 | ||||
| #define IMGFMT_Y41P 0x50313459 | ||||
| #define IMGFMT_Y211 0x31313259 | ||||
| #define IMGFMT_Y41T 0x54313459 // Y41P, Y lsb = transparency | ||||
| #define IMGFMT_Y42T 0x54323459 // UYVY, Y lsb = transparency | ||||
| #define IMGFMT_V422 0x32323456 // upside-down UYVY? | ||||
| #define IMGFMT_V655 0x35353656 | ||||
| #define IMGFMT_CLJR 0x524A4C43 | ||||
| #define IMGFMT_YUVP 0x50565559 // 10-bit YUYV | ||||
| #define IMGFMT_UYVP 0x50565955 // 10-bit UYVY | ||||
|  | ||||
| /* Compressed Formats */ | ||||
| #define IMGFMT_MPEGPES (('M'<<24)|('P'<<16)|('E'<<8)|('S')) | ||||
| #define IMGFMT_MJPEG (('M')|('J'<<8)|('P'<<16)|('G'<<24)) | ||||
| /* Formats that are understood by zoran chips, we include | ||||
|  * non-interlaced, interlaced top-first, interlaced bottom-first */ | ||||
| #define IMGFMT_ZRMJPEGNI  (('Z'<<24)|('R'<<16)|('N'<<8)|('I')) | ||||
| #define IMGFMT_ZRMJPEGIT (('Z'<<24)|('R'<<16)|('I'<<8)|('T')) | ||||
| #define IMGFMT_ZRMJPEGIB (('Z'<<24)|('R'<<16)|('I'<<8)|('B')) | ||||
|  | ||||
| // I think that this code could not be used by any other codec/format | ||||
| #define IMGFMT_XVMC 0x1DC70000 | ||||
| #define IMGFMT_XVMC_MASK 0xFFFF0000 | ||||
| #define IMGFMT_IS_XVMC(fmt) (((fmt)&IMGFMT_XVMC_MASK)==IMGFMT_XVMC) | ||||
| //these are chroma420 | ||||
| #define IMGFMT_XVMC_MOCO_MPEG2 (IMGFMT_XVMC|0x02) | ||||
| #define IMGFMT_XVMC_IDCT_MPEG2 (IMGFMT_XVMC|0x82) | ||||
|  | ||||
| // VDPAU specific format. | ||||
| #define IMGFMT_VDPAU               0x1DC80000 | ||||
| #define IMGFMT_VDPAU_MASK          0xFFFF0000 | ||||
| #define IMGFMT_IS_VDPAU(fmt)       (((fmt)&IMGFMT_VDPAU_MASK)==IMGFMT_VDPAU) | ||||
| #define IMGFMT_VDPAU_MPEG1         (IMGFMT_VDPAU|0x01) | ||||
| #define IMGFMT_VDPAU_MPEG2         (IMGFMT_VDPAU|0x02) | ||||
| #define IMGFMT_VDPAU_H264          (IMGFMT_VDPAU|0x03) | ||||
| #define IMGFMT_VDPAU_WMV3          (IMGFMT_VDPAU|0x04) | ||||
| #define IMGFMT_VDPAU_VC1           (IMGFMT_VDPAU|0x05) | ||||
| #define IMGFMT_VDPAU_MPEG4         (IMGFMT_VDPAU|0x06) | ||||
|  | ||||
| #define IMGFMT_IS_HWACCEL(fmt) (IMGFMT_IS_VDPAU(fmt) || IMGFMT_IS_XVMC(fmt)) | ||||
|  | ||||
| typedef struct { | ||||
|     void* data; | ||||
|     int size; | ||||
|     int id;        // stream id. usually 0x1E0 | ||||
|     int timestamp; // pts, 90000 Hz counter based | ||||
| } vo_mpegpes_t; | ||||
|  | ||||
| const char *ff_vo_format_name(int format); | ||||
|  | ||||
| /** | ||||
|  * Calculates the scale shifts for the chroma planes for planar YUV | ||||
|  * | ||||
|  * \param component_bits bits per component | ||||
|  * \return bits-per-pixel for format if successful (i.e. format is 3 or 4-planes planar YUV), 0 otherwise | ||||
|  */ | ||||
| int ff_mp_get_chroma_shift(int format, int *x_shift, int *y_shift, int *component_bits); | ||||
|  | ||||
| #endif /* MPLAYER_IMG_FORMAT_H */ | ||||
| @@ -1,99 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of MPlayer. | ||||
|  * | ||||
|  * MPlayer is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Lesser General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2.1 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * MPlayer is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Lesser General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Lesser General Public | ||||
|  * License along with MPlayer; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
|  */ | ||||
|  | ||||
| #ifndef MPLAYER_FASTMEMCPY_H | ||||
| #define MPLAYER_FASTMEMCPY_H | ||||
|  | ||||
| #include <inttypes.h> | ||||
| #include <string.h> | ||||
| #include <stddef.h> | ||||
|  | ||||
| void * fast_memcpy(void * to, const void * from, size_t len); | ||||
| void * mem2agpcpy(void * to, const void * from, size_t len); | ||||
|  | ||||
| #if ! defined(CONFIG_FASTMEMCPY) || ! (HAVE_MMX || HAVE_MMX2 || HAVE_AMD3DNOW /* || HAVE_SSE || HAVE_SSE2 */) | ||||
| #define mem2agpcpy(a,b,c) memcpy(a,b,c) | ||||
| #define fast_memcpy(a,b,c) memcpy(a,b,c) | ||||
| #endif | ||||
|  | ||||
| static inline void * mem2agpcpy_pic(void * dst, const void * src, int bytesPerLine, int height, int dstStride, int srcStride) | ||||
| { | ||||
|     int i; | ||||
|     void *retval=dst; | ||||
|  | ||||
|     if(dstStride == srcStride) | ||||
|     { | ||||
|         if (srcStride < 0) { | ||||
|                 src = (const uint8_t*)src + (height-1)*srcStride; | ||||
|                 dst = (uint8_t*)dst + (height-1)*dstStride; | ||||
|                 srcStride = -srcStride; | ||||
|         } | ||||
|  | ||||
|         mem2agpcpy(dst, src, srcStride*height); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         for(i=0; i<height; i++) | ||||
|         { | ||||
|             mem2agpcpy(dst, src, bytesPerLine); | ||||
|             src = (const uint8_t*)src + srcStride; | ||||
|             dst = (uint8_t*)dst + dstStride; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return retval; | ||||
| } | ||||
|  | ||||
| #define memcpy_pic(d, s, b, h, ds, ss) memcpy_pic2(d, s, b, h, ds, ss, 0) | ||||
| #define my_memcpy_pic(d, s, b, h, ds, ss) memcpy_pic2(d, s, b, h, ds, ss, 1) | ||||
|  | ||||
| /** | ||||
|  * \param limit2width always skip data between end of line and start of next | ||||
|  *                    instead of copying the full block when strides are the same | ||||
|  */ | ||||
| static inline void * memcpy_pic2(void * dst, const void * src, | ||||
|                                  int bytesPerLine, int height, | ||||
|                                  int dstStride, int srcStride, int limit2width) | ||||
| { | ||||
|     int i; | ||||
|     void *retval=dst; | ||||
|  | ||||
|     if(!limit2width && dstStride == srcStride) | ||||
|     { | ||||
|         if (srcStride < 0) { | ||||
|                 src = (const uint8_t*)src + (height-1)*srcStride; | ||||
|                 dst = (uint8_t*)dst + (height-1)*dstStride; | ||||
|                 srcStride = -srcStride; | ||||
|         } | ||||
|  | ||||
|         fast_memcpy(dst, src, srcStride*height); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         for(i=0; i<height; i++) | ||||
|         { | ||||
|             fast_memcpy(dst, src, bytesPerLine); | ||||
|             src = (const uint8_t*)src + srcStride; | ||||
|             dst = (uint8_t*)dst + dstStride; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return retval; | ||||
| } | ||||
|  | ||||
| #endif /* MPLAYER_FASTMEMCPY_H */ | ||||
| @@ -1,257 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of MPlayer. | ||||
|  * | ||||
|  * MPlayer is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * MPlayer is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License along | ||||
|  * with MPlayer; if not, write to the Free Software Foundation, Inc., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #include "config.h" | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  | ||||
| #if HAVE_MALLOC_H | ||||
| #include <malloc.h> | ||||
| #endif | ||||
|  | ||||
| #include "img_format.h" | ||||
| #include "mp_image.h" | ||||
|  | ||||
| #include "libvo/fastmemcpy.h" | ||||
| //#include "libavutil/mem.h" | ||||
| #include "libavutil/imgutils.h" | ||||
|  | ||||
| void ff_mp_image_alloc_planes(mp_image_t *mpi) { | ||||
|     uint32_t temp[256]; | ||||
|     if (avpriv_set_systematic_pal2(temp, ff_mp2ff_pix_fmt(mpi->imgfmt)) >= 0) | ||||
|         mpi->flags |= MP_IMGFLAG_RGB_PALETTE; | ||||
|  | ||||
|   // IF09 - allocate space for 4. plane delta info - unused | ||||
|   if (mpi->imgfmt == IMGFMT_IF09) { | ||||
|     mpi->planes[0]=av_malloc(mpi->bpp*mpi->width*(mpi->height+2)/8+ | ||||
|                             mpi->chroma_width*mpi->chroma_height); | ||||
|   } else | ||||
|     mpi->planes[0]=av_malloc(mpi->bpp*mpi->width*(mpi->height+2)/8); | ||||
|   if (mpi->flags&MP_IMGFLAG_PLANAR) { | ||||
|     int bpp = IMGFMT_IS_YUVP16(mpi->imgfmt)? 2 : 1; | ||||
|     // YV12/I420/YVU9/IF09. feel free to add other planar formats here... | ||||
|     mpi->stride[0]=mpi->stride[3]=bpp*mpi->width; | ||||
|     if(mpi->num_planes > 2){ | ||||
|       mpi->stride[1]=mpi->stride[2]=bpp*mpi->chroma_width; | ||||
|       if(mpi->flags&MP_IMGFLAG_SWAPPED){ | ||||
|         // I420/IYUV  (Y,U,V) | ||||
|         mpi->planes[1]=mpi->planes[0]+mpi->stride[0]*mpi->height; | ||||
|         mpi->planes[2]=mpi->planes[1]+mpi->stride[1]*mpi->chroma_height; | ||||
|         if (mpi->num_planes > 3) | ||||
|             mpi->planes[3]=mpi->planes[2]+mpi->stride[2]*mpi->chroma_height; | ||||
|       } else { | ||||
|         // YV12,YVU9,IF09  (Y,V,U) | ||||
|         mpi->planes[2]=mpi->planes[0]+mpi->stride[0]*mpi->height; | ||||
|         mpi->planes[1]=mpi->planes[2]+mpi->stride[1]*mpi->chroma_height; | ||||
|         if (mpi->num_planes > 3) | ||||
|             mpi->planes[3]=mpi->planes[1]+mpi->stride[1]*mpi->chroma_height; | ||||
|       } | ||||
|     } else { | ||||
|       // NV12/NV21 | ||||
|       mpi->stride[1]=mpi->chroma_width; | ||||
|       mpi->planes[1]=mpi->planes[0]+mpi->stride[0]*mpi->height; | ||||
|     } | ||||
|   } else { | ||||
|     mpi->stride[0]=mpi->width*mpi->bpp/8; | ||||
|     if (mpi->flags & MP_IMGFLAG_RGB_PALETTE) { | ||||
|       mpi->planes[1] = av_malloc(1024); | ||||
|       memcpy(mpi->planes[1], temp, 1024); | ||||
|     } | ||||
|   } | ||||
|   mpi->flags|=MP_IMGFLAG_ALLOCATED; | ||||
| } | ||||
|  | ||||
| mp_image_t* ff_alloc_mpi(int w, int h, unsigned long int fmt) { | ||||
|   mp_image_t* mpi = ff_new_mp_image(w,h); | ||||
|  | ||||
|   ff_mp_image_setfmt(mpi,fmt); | ||||
|   ff_mp_image_alloc_planes(mpi); | ||||
|  | ||||
|   return mpi; | ||||
| } | ||||
|  | ||||
| void ff_copy_mpi(mp_image_t *dmpi, mp_image_t *mpi) { | ||||
|   if(mpi->flags&MP_IMGFLAG_PLANAR){ | ||||
|     memcpy_pic(dmpi->planes[0],mpi->planes[0], mpi->w, mpi->h, | ||||
|                dmpi->stride[0],mpi->stride[0]); | ||||
|     memcpy_pic(dmpi->planes[1],mpi->planes[1], mpi->chroma_width, mpi->chroma_height, | ||||
|                dmpi->stride[1],mpi->stride[1]); | ||||
|     memcpy_pic(dmpi->planes[2], mpi->planes[2], mpi->chroma_width, mpi->chroma_height, | ||||
|                dmpi->stride[2],mpi->stride[2]); | ||||
|   } else { | ||||
|     memcpy_pic(dmpi->planes[0],mpi->planes[0], | ||||
|                mpi->w*(dmpi->bpp/8), mpi->h, | ||||
|                dmpi->stride[0],mpi->stride[0]); | ||||
|   } | ||||
| } | ||||
|  | ||||
| void ff_mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt){ | ||||
|     mpi->flags&=~(MP_IMGFLAG_PLANAR|MP_IMGFLAG_YUV|MP_IMGFLAG_SWAPPED); | ||||
|     mpi->imgfmt=out_fmt; | ||||
|     // compressed formats | ||||
|     if(out_fmt == IMGFMT_MPEGPES || | ||||
|        out_fmt == IMGFMT_ZRMJPEGNI || out_fmt == IMGFMT_ZRMJPEGIT || out_fmt == IMGFMT_ZRMJPEGIB || | ||||
|        IMGFMT_IS_HWACCEL(out_fmt)){ | ||||
|         mpi->bpp=0; | ||||
|         return; | ||||
|     } | ||||
|     mpi->num_planes=1; | ||||
|     if (IMGFMT_IS_RGB(out_fmt)) { | ||||
|         if (IMGFMT_RGB_DEPTH(out_fmt) < 8 && !(out_fmt&128)) | ||||
|             mpi->bpp = IMGFMT_RGB_DEPTH(out_fmt); | ||||
|         else | ||||
|             mpi->bpp=(IMGFMT_RGB_DEPTH(out_fmt)+7)&(~7); | ||||
|         return; | ||||
|     } | ||||
|     if (IMGFMT_IS_BGR(out_fmt)) { | ||||
|         if (IMGFMT_BGR_DEPTH(out_fmt) < 8 && !(out_fmt&128)) | ||||
|             mpi->bpp = IMGFMT_BGR_DEPTH(out_fmt); | ||||
|         else | ||||
|             mpi->bpp=(IMGFMT_BGR_DEPTH(out_fmt)+7)&(~7); | ||||
|         mpi->flags|=MP_IMGFLAG_SWAPPED; | ||||
|         return; | ||||
|     } | ||||
|     if (IMGFMT_IS_XYZ(out_fmt)) { | ||||
|         mpi->bpp=3*((IMGFMT_XYZ_DEPTH(out_fmt) + 7) & ~7); | ||||
|         return; | ||||
|     } | ||||
|     mpi->num_planes=3; | ||||
|     if (out_fmt == IMGFMT_GBR24P) { | ||||
|         mpi->bpp=24; | ||||
|         mpi->flags|=MP_IMGFLAG_PLANAR; | ||||
|         return; | ||||
|     } else if (out_fmt == IMGFMT_GBR12P) { | ||||
|         mpi->bpp=36; | ||||
|         mpi->flags|=MP_IMGFLAG_PLANAR; | ||||
|         return; | ||||
|     } else if (out_fmt == IMGFMT_GBR14P) { | ||||
|         mpi->bpp=42; | ||||
|         mpi->flags|=MP_IMGFLAG_PLANAR; | ||||
|         return; | ||||
|     } | ||||
|     mpi->flags|=MP_IMGFLAG_YUV; | ||||
|     if (ff_mp_get_chroma_shift(out_fmt, NULL, NULL, NULL)) { | ||||
|         mpi->flags|=MP_IMGFLAG_PLANAR; | ||||
|         mpi->bpp = ff_mp_get_chroma_shift(out_fmt, &mpi->chroma_x_shift, &mpi->chroma_y_shift, NULL); | ||||
|         mpi->chroma_width  = mpi->width  >> mpi->chroma_x_shift; | ||||
|         mpi->chroma_height = mpi->height >> mpi->chroma_y_shift; | ||||
|     } | ||||
|     switch(out_fmt){ | ||||
|     case IMGFMT_I420: | ||||
|     case IMGFMT_IYUV: | ||||
|         mpi->flags|=MP_IMGFLAG_SWAPPED; | ||||
|     case IMGFMT_YV12: | ||||
|         return; | ||||
|     case IMGFMT_420A: | ||||
|     case IMGFMT_422A: | ||||
|     case IMGFMT_444A: | ||||
|     case IMGFMT_IF09: | ||||
|         mpi->num_planes=4; | ||||
|     case IMGFMT_YVU9: | ||||
|     case IMGFMT_444P: | ||||
|     case IMGFMT_422P: | ||||
|     case IMGFMT_411P: | ||||
|     case IMGFMT_440P: | ||||
|     case IMGFMT_444P16_LE: | ||||
|     case IMGFMT_444P16_BE: | ||||
|     case IMGFMT_444P14_LE: | ||||
|     case IMGFMT_444P14_BE: | ||||
|     case IMGFMT_444P12_LE: | ||||
|     case IMGFMT_444P12_BE: | ||||
|     case IMGFMT_444P10_LE: | ||||
|     case IMGFMT_444P10_BE: | ||||
|     case IMGFMT_444P9_LE: | ||||
|     case IMGFMT_444P9_BE: | ||||
|     case IMGFMT_422P16_LE: | ||||
|     case IMGFMT_422P16_BE: | ||||
|     case IMGFMT_422P14_LE: | ||||
|     case IMGFMT_422P14_BE: | ||||
|     case IMGFMT_422P12_LE: | ||||
|     case IMGFMT_422P12_BE: | ||||
|     case IMGFMT_422P10_LE: | ||||
|     case IMGFMT_422P10_BE: | ||||
|     case IMGFMT_422P9_LE: | ||||
|     case IMGFMT_422P9_BE: | ||||
|     case IMGFMT_420P16_LE: | ||||
|     case IMGFMT_420P16_BE: | ||||
|     case IMGFMT_420P14_LE: | ||||
|     case IMGFMT_420P14_BE: | ||||
|     case IMGFMT_420P12_LE: | ||||
|     case IMGFMT_420P12_BE: | ||||
|     case IMGFMT_420P10_LE: | ||||
|     case IMGFMT_420P10_BE: | ||||
|     case IMGFMT_420P9_LE: | ||||
|     case IMGFMT_420P9_BE: | ||||
|         return; | ||||
|     case IMGFMT_Y16_LE: | ||||
|     case IMGFMT_Y16_BE: | ||||
|         mpi->bpp=16; | ||||
|     case IMGFMT_Y800: | ||||
|     case IMGFMT_Y8: | ||||
|         /* they're planar ones, but for easier handling use them as packed */ | ||||
|         mpi->flags&=~MP_IMGFLAG_PLANAR; | ||||
|         mpi->num_planes=1; | ||||
|         return; | ||||
|     case IMGFMT_Y8A: | ||||
|         mpi->num_planes=2; | ||||
|         return; | ||||
|     case IMGFMT_UYVY: | ||||
|         mpi->flags|=MP_IMGFLAG_SWAPPED; | ||||
|     case IMGFMT_YUY2: | ||||
|         mpi->chroma_x_shift = 1; | ||||
|         mpi->bpp=16; | ||||
|         mpi->num_planes=1; | ||||
|         return; | ||||
|     case IMGFMT_NV12: | ||||
|         mpi->flags|=MP_IMGFLAG_SWAPPED; | ||||
|     case IMGFMT_NV21: | ||||
|         mpi->flags|=MP_IMGFLAG_PLANAR; | ||||
|         mpi->bpp=12; | ||||
|         mpi->num_planes=2; | ||||
|         mpi->chroma_width=(mpi->width>>0); | ||||
|         mpi->chroma_height=(mpi->height>>1); | ||||
|         mpi->chroma_x_shift=0; | ||||
|         mpi->chroma_y_shift=1; | ||||
|         return; | ||||
|     } | ||||
|     ff_mp_msg(MSGT_DECVIDEO,MSGL_WARN,"mp_image: unknown out_fmt: 0x%X\n",out_fmt); | ||||
|     mpi->bpp=0; | ||||
| } | ||||
|  | ||||
| mp_image_t* ff_new_mp_image(int w,int h){ | ||||
|     mp_image_t* mpi = malloc(sizeof(mp_image_t)); | ||||
|     if(!mpi) return NULL; // error! | ||||
|     memset(mpi,0,sizeof(mp_image_t)); | ||||
|     mpi->width=mpi->w=w; | ||||
|     mpi->height=mpi->h=h; | ||||
|     return mpi; | ||||
| } | ||||
|  | ||||
| void ff_free_mp_image(mp_image_t* mpi){ | ||||
|     if(!mpi) return; | ||||
|     if(mpi->flags&MP_IMGFLAG_ALLOCATED){ | ||||
|         /* because we allocate the whole image at once */ | ||||
|         av_free(mpi->planes[0]); | ||||
|         if (mpi->flags & MP_IMGFLAG_RGB_PALETTE) | ||||
|             av_free(mpi->planes[1]); | ||||
|     } | ||||
|     free(mpi); | ||||
| } | ||||
|  | ||||
| @@ -1,159 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of MPlayer. | ||||
|  * | ||||
|  * MPlayer is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * MPlayer is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License along | ||||
|  * with MPlayer; if not, write to the Free Software Foundation, Inc., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #ifndef MPLAYER_MP_IMAGE_H | ||||
| #define MPLAYER_MP_IMAGE_H | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #undef printf //FIXME | ||||
| #undef fprintf //FIXME | ||||
| #include "mp_msg.h" | ||||
| #include "libavutil/avutil.h" | ||||
| #include "libavutil/avassert.h" | ||||
| #undef realloc | ||||
| #undef malloc | ||||
| #undef free | ||||
| #undef rand | ||||
| #undef srand | ||||
| #undef printf | ||||
| #undef strncpy | ||||
| #define ASMALIGN(ZEROBITS) ".p2align " #ZEROBITS "\n\t" | ||||
| #define CODEC_FLAG2_MEMC_ONLY     0x00001000 ///< Only do ME/MC (I frames -> ref, P frame -> ME+MC). | ||||
|  | ||||
| enum AVPixelFormat ff_mp2ff_pix_fmt(int mp); | ||||
|  | ||||
| //--------- codec's requirements (filled by the codec/vf) --------- | ||||
|  | ||||
| //--- buffer content restrictions: | ||||
| // set if buffer content shouldn't be modified: | ||||
| #define MP_IMGFLAG_PRESERVE 0x01 | ||||
| // set if buffer content will be READ. | ||||
| // This can be e.g. for next frame's MC: (I/P mpeg frames) - | ||||
| // then in combination with MP_IMGFLAG_PRESERVE - or it | ||||
| // can be because a video filter or codec will read a significant | ||||
| // amount of data while processing that frame (e.g. blending something | ||||
| // onto the frame, MV based intra prediction). | ||||
| // A frame marked like this should not be placed in to uncachable | ||||
| // video RAM for example. | ||||
| #define MP_IMGFLAG_READABLE 0x02 | ||||
|  | ||||
| //--- buffer width/stride/plane restrictions: (used for direct rendering) | ||||
| // stride _have_to_ be aligned to MB boundary:  [for DR restrictions] | ||||
| #define MP_IMGFLAG_ACCEPT_ALIGNED_STRIDE 0x4 | ||||
| // stride should be aligned to MB boundary:     [for buffer allocation] | ||||
| #define MP_IMGFLAG_PREFER_ALIGNED_STRIDE 0x8 | ||||
| // codec accept any stride (>=width): | ||||
| #define MP_IMGFLAG_ACCEPT_STRIDE 0x10 | ||||
| // codec accept any width (width*bpp=stride -> stride%bpp==0) (>=width): | ||||
| #define MP_IMGFLAG_ACCEPT_WIDTH 0x20 | ||||
| //--- for planar formats only: | ||||
| // uses only stride[0], and stride[1]=stride[2]=stride[0]>>mpi->chroma_x_shift | ||||
| #define MP_IMGFLAG_COMMON_STRIDE 0x40 | ||||
| // uses only planes[0], and calculates planes[1,2] from width,height,imgfmt | ||||
| #define MP_IMGFLAG_COMMON_PLANE 0x80 | ||||
|  | ||||
| #define MP_IMGFLAGMASK_RESTRICTIONS 0xFF | ||||
|  | ||||
| //--------- color info (filled by ff_mp_image_setfmt() ) ----------- | ||||
| // set if number of planes > 1 | ||||
| #define MP_IMGFLAG_PLANAR 0x100 | ||||
| // set if it's YUV colorspace | ||||
| #define MP_IMGFLAG_YUV 0x200 | ||||
| // set if it's swapped (BGR or YVU) plane/byteorder | ||||
| #define MP_IMGFLAG_SWAPPED 0x400 | ||||
| // set if you want memory for palette allocated and managed by ff_vf_get_image etc. | ||||
| #define MP_IMGFLAG_RGB_PALETTE 0x800 | ||||
|  | ||||
| #define MP_IMGFLAGMASK_COLORS 0xF00 | ||||
|  | ||||
| // codec uses drawing/rendering callbacks (draw_slice()-like thing, DR method 2) | ||||
| // [the codec will set this flag if it supports callbacks, and the vo _may_ | ||||
| //  clear it in get_image() if draw_slice() not implemented] | ||||
| #define MP_IMGFLAG_DRAW_CALLBACK 0x1000 | ||||
| // set if it's in video buffer/memory: [set by vo/vf's get_image() !!!] | ||||
| #define MP_IMGFLAG_DIRECT 0x2000 | ||||
| // set if buffer is allocated (used in destination images): | ||||
| #define MP_IMGFLAG_ALLOCATED 0x4000 | ||||
|  | ||||
| // buffer type was printed (do NOT set this flag - it's for INTERNAL USE!!!) | ||||
| #define MP_IMGFLAG_TYPE_DISPLAYED 0x8000 | ||||
|  | ||||
| // codec doesn't support any form of direct rendering - it has own buffer | ||||
| // allocation. so we just export its buffer pointers: | ||||
| #define MP_IMGTYPE_EXPORT 0 | ||||
| // codec requires a static WO buffer, but it does only partial updates later: | ||||
| #define MP_IMGTYPE_STATIC 1 | ||||
| // codec just needs some WO memory, where it writes/copies the whole frame to: | ||||
| #define MP_IMGTYPE_TEMP 2 | ||||
| // I+P type, requires 2+ independent static R/W buffers | ||||
| #define MP_IMGTYPE_IP 3 | ||||
| // I+P+B type, requires 2+ independent static R/W and 1+ temp WO buffers | ||||
| #define MP_IMGTYPE_IPB 4 | ||||
| // Upper 16 bits give desired buffer number, -1 means get next available | ||||
| #define MP_IMGTYPE_NUMBERED 5 | ||||
| // Doesn't need any buffer, incomplete image (probably a first field only) | ||||
| // we need this type to be able to differentiate between half frames and | ||||
| // all other cases | ||||
| #define MP_IMGTYPE_INCOMPLETE 6 | ||||
|  | ||||
| #define MP_MAX_PLANES 4 | ||||
|  | ||||
| #define MP_IMGFIELD_ORDERED 0x01 | ||||
| #define MP_IMGFIELD_TOP_FIRST 0x02 | ||||
| #define MP_IMGFIELD_REPEAT_FIRST 0x04 | ||||
| #define MP_IMGFIELD_TOP 0x08 | ||||
| #define MP_IMGFIELD_BOTTOM 0x10 | ||||
| #define MP_IMGFIELD_INTERLACED 0x20 | ||||
|  | ||||
| typedef struct mp_image { | ||||
|     unsigned int flags; | ||||
|     unsigned char type; | ||||
|     int number; | ||||
|     unsigned char bpp;  // bits/pixel. NOT depth! for RGB it will be n*8 | ||||
|     unsigned int imgfmt; | ||||
|     int width,height;  // stored dimensions | ||||
|     int x,y,w,h;  // visible dimensions | ||||
|     unsigned char* planes[MP_MAX_PLANES]; | ||||
|     int stride[MP_MAX_PLANES]; | ||||
|     char * qscale; | ||||
|     int qstride; | ||||
|     int pict_type; // 0->unknown, 1->I, 2->P, 3->B | ||||
|     int fields; | ||||
|     int qscale_type; // 0->mpeg1/4/h263, 1->mpeg2 | ||||
|     int num_planes; | ||||
|     /* these are only used by planar formats Y,U(Cb),V(Cr) */ | ||||
|     int chroma_width; | ||||
|     int chroma_height; | ||||
|     int chroma_x_shift; // horizontal | ||||
|     int chroma_y_shift; // vertical | ||||
|     int usage_count; | ||||
|     /* for private use by filter or vo driver (to store buffer id or dmpi) */ | ||||
|     void* priv; | ||||
| } mp_image_t; | ||||
|  | ||||
| void ff_mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt); | ||||
| mp_image_t* ff_new_mp_image(int w,int h); | ||||
| void ff_free_mp_image(mp_image_t* mpi); | ||||
|  | ||||
| mp_image_t* ff_alloc_mpi(int w, int h, unsigned long int fmt); | ||||
| void ff_mp_image_alloc_planes(mp_image_t *mpi); | ||||
| void ff_copy_mpi(mp_image_t *dmpi, mp_image_t *mpi); | ||||
|  | ||||
| #endif /* MPLAYER_MP_IMAGE_H */ | ||||
| @@ -1,166 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of MPlayer. | ||||
|  * | ||||
|  * MPlayer is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * MPlayer is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License along | ||||
|  * with MPlayer; if not, write to the Free Software Foundation, Inc., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #ifndef MPLAYER_MP_MSG_H | ||||
| #define MPLAYER_MP_MSG_H | ||||
|  | ||||
| #include <stdarg.h> | ||||
|  | ||||
| // defined in mplayer.c and mencoder.c | ||||
| extern int verbose; | ||||
|  | ||||
| // verbosity elevel: | ||||
|  | ||||
| /* Only messages level MSGL_FATAL-MSGL_STATUS should be translated, | ||||
|  * messages level MSGL_V and above should not be translated. */ | ||||
|  | ||||
| #define MSGL_FATAL 0  // will exit/abort | ||||
| #define MSGL_ERR 1    // continues | ||||
| #define MSGL_WARN 2   // only warning | ||||
| #define MSGL_HINT 3   // short help message | ||||
| #define MSGL_INFO 4   // -quiet | ||||
| #define MSGL_STATUS 5 // v=0 | ||||
| #define MSGL_V 6      // v=1 | ||||
| #define MSGL_DBG2 7   // v=2 | ||||
| #define MSGL_DBG3 8   // v=3 | ||||
| #define MSGL_DBG4 9   // v=4 | ||||
| #define MSGL_DBG5 10  // v=5 | ||||
|  | ||||
| #define MSGL_FIXME 1  // for conversions from printf where the appropriate MSGL is not known; set equal to ERR for obtrusiveness | ||||
| #define MSGT_FIXME 0  // for conversions from printf where the appropriate MSGT is not known; set equal to GLOBAL for obtrusiveness | ||||
|  | ||||
| // code/module: | ||||
|  | ||||
| #define MSGT_GLOBAL 0        // common player stuff errors | ||||
| #define MSGT_CPLAYER 1       // console player (mplayer.c) | ||||
| #define MSGT_GPLAYER 2       // gui player | ||||
|  | ||||
| #define MSGT_VO 3       // libvo | ||||
| #define MSGT_AO 4       // libao | ||||
|  | ||||
| #define MSGT_DEMUXER 5    // demuxer.c (general stuff) | ||||
| #define MSGT_DS 6         // demux stream (add/read packet etc) | ||||
| #define MSGT_DEMUX 7      // fileformat-specific stuff (demux_*.c) | ||||
| #define MSGT_HEADER 8     // fileformat-specific header (*header.c) | ||||
|  | ||||
| #define MSGT_AVSYNC 9     // mplayer.c timer stuff | ||||
| #define MSGT_AUTOQ 10     // mplayer.c auto-quality stuff | ||||
|  | ||||
| #define MSGT_CFGPARSER 11 // cfgparser.c | ||||
|  | ||||
| #define MSGT_DECAUDIO 12  // av decoder | ||||
| #define MSGT_DECVIDEO 13 | ||||
|  | ||||
| #define MSGT_SEEK 14    // seeking code | ||||
| #define MSGT_WIN32 15   // win32 dll stuff | ||||
| #define MSGT_OPEN 16    // open.c (stream opening) | ||||
| #define MSGT_DVD 17     // open.c (DVD init/read/seek) | ||||
|  | ||||
| #define MSGT_PARSEES 18 // parse_es.c (mpeg stream parser) | ||||
| #define MSGT_LIRC 19    // lirc_mp.c and input lirc driver | ||||
|  | ||||
| #define MSGT_STREAM 20  // stream.c | ||||
| #define MSGT_CACHE 21   // cache2.c | ||||
|  | ||||
| #define MSGT_MENCODER 22 | ||||
|  | ||||
| #define MSGT_XACODEC 23 // XAnim codecs | ||||
|  | ||||
| #define MSGT_TV 24      // TV input subsystem | ||||
|  | ||||
| #define MSGT_OSDEP 25  // OS-dependent parts | ||||
|  | ||||
| #define MSGT_SPUDEC 26 // spudec.c | ||||
|  | ||||
| #define MSGT_PLAYTREE 27    // Playtree handeling (playtree.c, playtreeparser.c) | ||||
|  | ||||
| #define MSGT_INPUT 28 | ||||
|  | ||||
| #define MSGT_VFILTER 29 | ||||
|  | ||||
| #define MSGT_OSD 30 | ||||
|  | ||||
| #define MSGT_NETWORK 31 | ||||
|  | ||||
| #define MSGT_CPUDETECT 32 | ||||
|  | ||||
| #define MSGT_CODECCFG 33 | ||||
|  | ||||
| #define MSGT_SWS 34 | ||||
|  | ||||
| #define MSGT_VOBSUB 35 | ||||
| #define MSGT_SUBREADER 36 | ||||
|  | ||||
| #define MSGT_AFILTER 37  // Audio filter messages | ||||
|  | ||||
| #define MSGT_NETST 38 // Netstream | ||||
|  | ||||
| #define MSGT_MUXER 39 // muxer layer | ||||
|  | ||||
| #define MSGT_OSD_MENU 40 | ||||
|  | ||||
| #define MSGT_IDENTIFY 41  // -identify output | ||||
|  | ||||
| #define MSGT_RADIO 42 | ||||
|  | ||||
| #define MSGT_ASS 43 // libass messages | ||||
|  | ||||
| #define MSGT_LOADER 44 // dll loader messages | ||||
|  | ||||
| #define MSGT_STATUSLINE 45 // playback/encoding status line | ||||
|  | ||||
| #define MSGT_TELETEXT 46       // Teletext decoder | ||||
|  | ||||
| #define MSGT_MAX 64 | ||||
|  | ||||
|  | ||||
| extern char *ff_mp_msg_charset; | ||||
| extern int ff_mp_msg_color; | ||||
| extern int ff_mp_msg_module; | ||||
|  | ||||
| extern int ff_mp_msg_levels[MSGT_MAX]; | ||||
| extern int ff_mp_msg_level_all; | ||||
|  | ||||
|  | ||||
| void ff_mp_msg_init(void); | ||||
| int ff_mp_msg_test(int mod, int lev); | ||||
|  | ||||
| #include "config.h" | ||||
|  | ||||
| void ff_mp_msg_va(int mod, int lev, const char *format, va_list va); | ||||
| #ifdef __GNUC__ | ||||
| void ff_mp_msg(int mod, int lev, const char *format, ... ) __attribute__ ((format (printf, 3, 4))); | ||||
| #   ifdef MP_DEBUG | ||||
| #      define mp_dbg(mod,lev, args... ) ff_mp_msg(mod, lev, ## args ) | ||||
| #   else | ||||
|        // only useful for developers, disable but check syntax | ||||
| #      define mp_dbg(mod,lev, args... ) do { if (0) ff_mp_msg(mod, lev, ## args ); } while (0) | ||||
| #   endif | ||||
| #else // not GNU C | ||||
| void ff_mp_msg(int mod, int lev, const char *format, ... ); | ||||
| #   ifdef MP_DEBUG | ||||
| #      define mp_dbg(mod,lev, ... ) ff_mp_msg(mod, lev, __VA_ARGS__) | ||||
| #   else | ||||
|        // only useful for developers, disable but check syntax | ||||
| #      define mp_dbg(mod,lev, ... ) do { if (0) ff_mp_msg(mod, lev, __VA_ARGS__); } while (0) | ||||
| #   endif | ||||
| #endif /* __GNUC__ */ | ||||
|  | ||||
| const char* ff_filename_recode(const char* filename); | ||||
|  | ||||
| #endif /* MPLAYER_MP_MSG_H */ | ||||
| @@ -1,167 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of MPlayer. | ||||
|  * | ||||
|  * MPlayer is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * MPlayer is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License along | ||||
|  * with MPlayer; if not, write to the Free Software Foundation, Inc., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #ifndef MPLAYER_VF_H | ||||
| #define MPLAYER_VF_H | ||||
|  | ||||
| //#include "m_option.h" | ||||
| #include "mp_image.h" | ||||
|  | ||||
| //extern m_obj_settings_t* vf_settings; | ||||
| //extern const m_obj_list_t vf_obj_list; | ||||
|  | ||||
| struct vf_instance; | ||||
| struct vf_priv_s; | ||||
|  | ||||
| typedef struct vf_info_s { | ||||
|     const char *info; | ||||
|     const char *name; | ||||
|     const char *author; | ||||
|     const char *comment; | ||||
|     int (*vf_open)(struct vf_instance *vf,char* args); | ||||
|     // Ptr to a struct dscribing the options | ||||
|     const void* opts; | ||||
| } vf_info_t; | ||||
|  | ||||
| #define NUM_NUMBERED_MPI 50 | ||||
|  | ||||
| typedef struct vf_image_context_s { | ||||
|     mp_image_t* static_images[2]; | ||||
|     mp_image_t* temp_images[1]; | ||||
|     mp_image_t* export_images[1]; | ||||
|     mp_image_t* numbered_images[NUM_NUMBERED_MPI]; | ||||
|     int static_idx; | ||||
| } vf_image_context_t; | ||||
|  | ||||
| typedef struct vf_format_context_t { | ||||
|     int have_configured; | ||||
|     int orig_width, orig_height, orig_fmt; | ||||
| } vf_format_context_t; | ||||
|  | ||||
| typedef struct vf_instance { | ||||
|     const vf_info_t* info; | ||||
|     // funcs: | ||||
|     int (*config)(struct vf_instance *vf, | ||||
|         int width, int height, int d_width, int d_height, | ||||
|         unsigned int flags, unsigned int outfmt); | ||||
|     int (*control)(struct vf_instance *vf, | ||||
|         int request, void* data); | ||||
|     int (*query_format)(struct vf_instance *vf, | ||||
|         unsigned int fmt); | ||||
|     void (*get_image)(struct vf_instance *vf, | ||||
|         mp_image_t *mpi); | ||||
|     int (*put_image)(struct vf_instance *vf, | ||||
|         mp_image_t *mpi, double pts); | ||||
|     void (*start_slice)(struct vf_instance *vf, | ||||
|         mp_image_t *mpi); | ||||
|     void (*draw_slice)(struct vf_instance *vf, | ||||
|         unsigned char** src, int* stride, int w,int h, int x, int y); | ||||
|     void (*uninit)(struct vf_instance *vf); | ||||
|  | ||||
|     int (*continue_buffered_image)(struct vf_instance *vf); | ||||
|     // caps: | ||||
|     unsigned int default_caps; // used by default query_format() | ||||
|     unsigned int default_reqs; // used by default config() | ||||
|     // data: | ||||
|     int w, h; | ||||
|     vf_image_context_t imgctx; | ||||
|     vf_format_context_t fmt; | ||||
|     struct vf_instance *next; | ||||
|     mp_image_t *dmpi; | ||||
|     struct vf_priv_s* priv; | ||||
| } vf_instance_t; | ||||
|  | ||||
| // control codes: | ||||
| typedef struct vf_seteq_s | ||||
| { | ||||
|     const char *item; | ||||
|     int value; | ||||
| } vf_equalizer_t; | ||||
|  | ||||
| #define VFCTRL_QUERY_MAX_PP_LEVEL 4 /* test for postprocessing support (max level) */ | ||||
| #define VFCTRL_SET_PP_LEVEL 5 /* set postprocessing level */ | ||||
| #define VFCTRL_SET_EQUALIZER 6 /* set color options (brightness,contrast etc) */ | ||||
| #define VFCTRL_GET_EQUALIZER 8 /* gset color options (brightness,contrast etc) */ | ||||
| #define VFCTRL_DRAW_OSD 7 | ||||
| #define VFCTRL_CHANGE_RECTANGLE 9 /* Change the rectangle boundaries */ | ||||
| #define VFCTRL_FLIP_PAGE 10 /* Tell the vo to flip pages */ | ||||
| #define VFCTRL_DUPLICATE_FRAME 11 /* For encoding - encode zero-change frame */ | ||||
| #define VFCTRL_SKIP_NEXT_FRAME 12 /* For encoding - drop the next frame that passes through */ | ||||
| #define VFCTRL_FLUSH_FRAMES    13 /* For encoding - flush delayed frames */ | ||||
| #define VFCTRL_SCREENSHOT      14 /* Make a screenshot */ | ||||
| #define VFCTRL_INIT_EOSD       15 /* Select EOSD renderer */ | ||||
| #define VFCTRL_DRAW_EOSD       16 /* Render EOSD */ | ||||
| #define VFCTRL_GET_PTS         17 /* Return last pts value that reached vf_vo*/ | ||||
| #define VFCTRL_SET_DEINTERLACE 18 /* Set deinterlacing status */ | ||||
| #define VFCTRL_GET_DEINTERLACE 19 /* Get deinterlacing status */ | ||||
|  | ||||
| #include "vfcap.h" | ||||
|  | ||||
| //FIXME this should be in a common header, but i dunno which | ||||
| #define MP_NOPTS_VALUE (-1LL<<63) //both int64_t and double should be able to represent this exactly | ||||
|  | ||||
|  | ||||
| // functions: | ||||
| void ff_vf_mpi_clear(mp_image_t* mpi,int x0,int y0,int w,int h); | ||||
| mp_image_t* ff_vf_get_image(vf_instance_t* vf, unsigned int outfmt, int mp_imgtype, int mp_imgflag, int w, int h); | ||||
|  | ||||
| vf_instance_t* vf_open_plugin(const vf_info_t* const* filter_list, vf_instance_t* next, const char *name, char **args); | ||||
| vf_instance_t* vf_open_filter(vf_instance_t* next, const char *name, char **args); | ||||
| vf_instance_t* ff_vf_add_before_vo(vf_instance_t **vf, char *name, char **args); | ||||
| vf_instance_t* vf_open_encoder(vf_instance_t* next, const char *name, char *args); | ||||
|  | ||||
| unsigned int ff_vf_match_csp(vf_instance_t** vfp,const unsigned int* list,unsigned int preferred); | ||||
| void ff_vf_clone_mpi_attributes(mp_image_t* dst, mp_image_t* src); | ||||
| void ff_vf_queue_frame(vf_instance_t *vf, int (*)(vf_instance_t *)); | ||||
| int ff_vf_output_queued_frame(vf_instance_t *vf); | ||||
|  | ||||
| // default wrappers: | ||||
| int ff_vf_next_config(struct vf_instance *vf, | ||||
|         int width, int height, int d_width, int d_height, | ||||
|         unsigned int flags, unsigned int outfmt); | ||||
| int ff_vf_next_control(struct vf_instance *vf, int request, void* data); | ||||
| void ff_vf_extra_flip(struct vf_instance *vf); | ||||
| int ff_vf_next_query_format(struct vf_instance *vf, unsigned int fmt); | ||||
| int ff_vf_next_put_image(struct vf_instance *vf,mp_image_t *mpi, double pts); | ||||
| void ff_vf_next_draw_slice (struct vf_instance *vf, unsigned char** src, int* stride, int w,int h, int x, int y); | ||||
|  | ||||
| vf_instance_t* ff_append_filters(vf_instance_t* last); | ||||
|  | ||||
| void ff_vf_uninit_filter(vf_instance_t* vf); | ||||
| void ff_vf_uninit_filter_chain(vf_instance_t* vf); | ||||
|  | ||||
| int ff_vf_config_wrapper(struct vf_instance *vf, | ||||
|                       int width, int height, int d_width, int d_height, | ||||
|                       unsigned int flags, unsigned int outfmt); | ||||
|  | ||||
| static inline int norm_qscale(int qscale, int type) | ||||
| { | ||||
|     switch (type) { | ||||
|     case 0: // MPEG-1 | ||||
|         return qscale; | ||||
|     case 1: // MPEG-2 | ||||
|         return qscale >> 1; | ||||
|     case 2: // H264 | ||||
|         return qscale >> 2; | ||||
|     case 3: // VP56 | ||||
|         return (63 - qscale + 2) >> 2; | ||||
|     } | ||||
|     return qscale; | ||||
| } | ||||
|  | ||||
| #endif /* MPLAYER_VF_H */ | ||||
| @@ -1,56 +0,0 @@ | ||||
| /* VFCAP_* values: they are flags, returned by query_format(): | ||||
|  * | ||||
|  * This file is part of MPlayer. | ||||
|  * | ||||
|  * MPlayer is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * MPlayer is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License along | ||||
|  * with MPlayer; if not, write to the Free Software Foundation, Inc., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #ifndef MPLAYER_VFCAP_H | ||||
| #define MPLAYER_VFCAP_H | ||||
|  | ||||
| // set, if the given colorspace is supported (with or without conversion) | ||||
| #define VFCAP_CSP_SUPPORTED 0x1 | ||||
| // set, if the given colorspace is supported _without_ conversion | ||||
| #define VFCAP_CSP_SUPPORTED_BY_HW 0x2 | ||||
| // set if the driver/filter can draw OSD | ||||
| #define VFCAP_OSD 0x4 | ||||
| // set if the driver/filter can handle compressed SPU stream | ||||
| #define VFCAP_SPU 0x8 | ||||
| // scaling up/down by hardware, or software: | ||||
| #define VFCAP_HWSCALE_UP 0x10 | ||||
| #define VFCAP_HWSCALE_DOWN 0x20 | ||||
| #define VFCAP_SWSCALE 0x40 | ||||
| // driver/filter can do vertical flip (upside-down) | ||||
| #define VFCAP_FLIP 0x80 | ||||
|  | ||||
| // driver/hardware handles timing (blocking) | ||||
| #define VFCAP_TIMER 0x100 | ||||
| // driver _always_ flip image upside-down (for ve_vfw) | ||||
| #define VFCAP_FLIPPED 0x200 | ||||
| // vf filter: accepts stride (put_image) | ||||
| // vo driver: has draw_slice() support for the given csp | ||||
| #define VFCAP_ACCEPT_STRIDE 0x400 | ||||
| // filter does postprocessing (so you shouldn't scale/filter image before it) | ||||
| #define VFCAP_POSTPROC 0x800 | ||||
| // filter cannot be reconfigured to different size & format | ||||
| #define VFCAP_CONSTANT 0x1000 | ||||
| // filter can draw EOSD | ||||
| #define VFCAP_EOSD 0x2000 | ||||
| // filter will draw EOSD at screen resolution (without scaling) | ||||
| #define VFCAP_EOSD_UNSCALED 0x4000 | ||||
| // used by libvo and vf_vo, indicates the VO does not support draw_slice for this format | ||||
| #define VOCAP_NOSLICES 0x8000 | ||||
|  | ||||
| #endif /* MPLAYER_VFCAP_H */ | ||||
| @@ -31,7 +31,7 @@ | ||||
|  | ||||
| #define LIBAVFILTER_VERSION_MAJOR  5 | ||||
| #define LIBAVFILTER_VERSION_MINOR  9 | ||||
| #define LIBAVFILTER_VERSION_MICRO 102 | ||||
| #define LIBAVFILTER_VERSION_MICRO 103 | ||||
|  | ||||
| #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | ||||
|                                                LIBAVFILTER_VERSION_MINOR, \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user