Fix related to #29694: quicktime export was not showing or respecting RGBA
[blender.git] / source / blender / quicktime / quicktime_export.h
index 5962ae3d713ffff04abefec08a796e695e611dfd..f64521bda35889638ebf5d66fd7077d906a056e3 100644 (file)
@@ -1,14 +1,10 @@
-/* $Id$ 
- *
- * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program 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. The Blender
- * Foundation also sells licenses for use in proprietary software under
- * the Blender License.  See http://www.blender.org/BL/ for information
- * about this.
+ * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -17,7 +13,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  *
  * Contributor(s): none yet.
  *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/quicktime/quicktime_export.h
+ *  \ingroup quicktime
  */
 
+
 #ifndef __QUICKTIME_EXPORT_H__
 #define __QUICKTIME_EXPORT_H__
 
 
 #define __AIFF__
 
+
+#define QTAUDIO_FLAG_RESAMPLE_NOHQ 1
+#define QTAUDIO_FLAG_CODEC_ISCBR 2
+
+
+/*Codec list*/
+typedef struct QuicktimeCodecTypeDesc {
+       int codecType;
+       int rnatmpvalue;
+       char * codecName;
+} QuicktimeCodecTypeDesc ;
+
 // quicktime movie output functions
 struct RenderData;
+struct Scene;
+struct wmOperatorType;
+struct ReportList;
 
-void start_qt(struct RenderData *rd, int rectx, int recty);    //for movie handle (BKE writeavi.c now)
-void append_qt(int frame, int *pixels, int rectx, int recty);
+int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports);    //for movie handle (BKE writeavi.c now)
+int append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports);
 void end_qt(void);
+void filepath_qt(char *string, struct RenderData *rd);
+
+/*RNA helper functions */
+void quicktime_verify_image_type(struct RenderData *rd, struct ImageFormatData *imf); //used by RNA for defaults values init, if needed
+/*Video codec type*/
+int quicktime_get_num_videocodecs(void);
+QuicktimeCodecTypeDesc* quicktime_get_videocodecType_desc(int indexValue);
+int quicktime_rnatmpvalue_from_videocodectype(int codecType);
+int quicktime_videocodecType_from_rnatmpvalue(int rnatmpvalue);
+
+#ifdef USE_QTKIT
+/*Audio codec type*/
+int quicktime_get_num_audiocodecs(void);
+QuicktimeCodecTypeDesc* quicktime_get_audiocodecType_desc(int indexValue);
+int quicktime_rnatmpvalue_from_audiocodectype(int codecType);
+int quicktime_audiocodecType_from_rnatmpvalue(int rnatmpvalue);
+#endif
+
+#ifndef USE_QTKIT
+void SCENE_OT_render_data_set_quicktime_codec(struct wmOperatorType *ot); //Operator to raise quicktime standard dialog to request codec settings
+#endif
+
 
-int  get_qtcodec_settings(void);               //for buttons.c
 void free_qtcomponentdata(void);
-void makeqtstring (char *string);              //for playanim.c
+void makeqtstring(struct RenderData *rd, char *string);                //for playanim.c
+
+
+
+#if (defined(USE_QTKIT) && defined(MAC_OS_X_VERSION_10_6) && __LP64__)
+//Include the quicktime codec types constants that are missing in QTKitDefines.h in 10.6 / 64bit
+enum {
+       kRawCodecType                                           = 'raw ',
+       kCinepakCodecType                                       = 'cvid',
+       kGraphicsCodecType                                      = 'smc ',
+       kAnimationCodecType                             = 'rle ',
+       kVideoCodecType                                         = 'rpza',
+       kComponentVideoCodecType                        = 'yuv2',
+       kJPEGCodecType                                          = 'jpeg',
+       kMotionJPEGACodecType                           = 'mjpa',
+       kMotionJPEGBCodecType                           = 'mjpb',
+       kSGICodecType                                           = '.SGI',
+       kPlanarRGBCodecType                             = '8BPS',
+       kMacPaintCodecType                                      = 'PNTG',
+       kGIFCodecType                                           = 'gif ',
+       kPhotoCDCodecType                                       = 'kpcd',
+       kQuickDrawGXCodecType                           = 'qdgx',
+       kAVRJPEGCodecType                                       = 'avr ',
+       kOpenDMLJPEGCodecType                           = 'dmb1',
+       kBMPCodecType                                           = 'WRLE',
+       kWindowsRawCodecType                            = 'WRAW',
+       kVectorCodecType                                        = 'path',
+       kQuickDrawCodecType                             = 'qdrw',
+       kWaterRippleCodecType                           = 'ripl',
+       kFireCodecType                                          = 'fire',
+       kCloudCodecType                                         = 'clou',
+       kH261CodecType                                          = 'h261',
+       kH263CodecType                                          = 'h263',
+       kDVCNTSCCodecType                                       = 'dvc ',       /* DV - NTSC and DVCPRO NTSC (available in QuickTime 6.0 or later)*/
+       /* NOTE: kDVCProNTSCCodecType is deprecated.    */
+       /* Use kDVCNTSCCodecType instead -- as far as the codecs are concerned, */
+       /* the two data formats are identical.*/
+       kDVCPALCodecType                                        = 'dvcp',
+       kDVCProPALCodecType                             = 'dvpp',       /* available in QuickTime 6.0 or later*/
+       kDVCPro50NTSCCodecType                          = 'dv5n',
+       kDVCPro50PALCodecType                           = 'dv5p',
+       kDVCPro100NTSCCodecType                         = 'dv1n',
+       kDVCPro100PALCodecType                          = 'dv1p',
+       kDVCPROHD720pCodecType                          = 'dvhp',
+       kDVCPROHD1080i60CodecType                       = 'dvh6',
+       kDVCPROHD1080i50CodecType                       = 'dvh5',
+       kBaseCodecType                                          = 'base',
+       kFLCCodecType                                           = 'flic',
+       kTargaCodecType                                         = 'tga ',
+       kPNGCodecType                                           = 'png ',
+       kTIFFCodecType                                          = 'tiff',       /* NOTE: despite what might seem obvious from the two constants*/
+       /* below and their names, they really are correct. 'yuvu' really */
+       /* does mean signed, and 'yuvs' really does mean unsigned. Really. */
+       kComponentVideoSigned                           = 'yuvu',
+       kComponentVideoUnsigned                         = 'yuvs',
+       kCMYKCodecType                                          = 'cmyk',
+       kMicrosoftVideo1CodecType                       = 'msvc',
+       kSorensonCodecType                                      = 'SVQ1',
+       kSorenson3CodecType                             = 'SVQ3',       /* available in QuickTime 5 and later*/
+       kIndeo4CodecType                                        = 'IV41',
+       kMPEG4VisualCodecType                           = 'mp4v',
+       k64ARGBCodecType                                        = 'b64a',
+       k48RGBCodecType                                         = 'b48r',
+       k32AlphaGrayCodecType                           = 'b32a',
+       k16GrayCodecType                                        = 'b16g',
+       kMpegYUV420CodecType                            = 'myuv',
+       kYUV420CodecType                                        = 'y420',
+       kSorensonYUV9CodecType                          = 'syv9',
+       k422YpCbCr8CodecType                            = '2vuy',       /* Component Y'CbCr 8-bit 4:2:2 */
+       k444YpCbCr8CodecType                            = 'v308',       /* Component Y'CbCr 8-bit 4:4:4 */
+       k4444YpCbCrA8CodecType                          = 'v408',       /* Component Y'CbCrA 8-bit 4:4:4:4 */
+       k422YpCbCr16CodecType                           = 'v216',       /* Component Y'CbCr 10,12,14,16-bit 4:2:2*/
+       k422YpCbCr10CodecType                           = 'v210',       /* Component Y'CbCr 10-bit 4:2:2 */
+       k444YpCbCr10CodecType                           = 'v410',       /* Component Y'CbCr 10-bit 4:4:4 */
+       k4444YpCbCrA8RCodecType                         = 'r408',       /* Component Y'CbCrA 8-bit 4:4:4:4, rendering format. full range alpha, zero biased yuv*/
+       kJPEG2000CodecType                                      = 'mjp2',
+       kPixletCodecType                                        = 'pxlt',
+       kH264CodecType                                          = 'avc1'
+};
+#endif
 
 #endif //(_WIN32) || (__APPLE__)