| 
									
										
										
										
											2003-04-28 02:15:46 +00:00
										 |  |  | /* $Id$ 
 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-01-07 19:13:47 +00:00
										 |  |  |  * ***** BEGIN GPL LICENSE BLOCK ***** | 
					
						
							| 
									
										
										
										
											2003-04-28 02:15:46 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * 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 | 
					
						
							| 
									
										
										
										
											2008-01-07 19:13:47 +00:00
										 |  |  |  * of the License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2003-04-28 02:15:46 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * This program 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 this program; if not, write to the Free Software Foundation, | 
					
						
							| 
									
										
										
										
											2010-02-12 13:34:04 +00:00
										 |  |  |  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							| 
									
										
										
										
											2003-04-28 02:15:46 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. | 
					
						
							|  |  |  |  * All rights reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * The Original Code is: all of this file. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Contributor(s): none yet. | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-01-07 19:13:47 +00:00
										 |  |  |  * ***** END GPL LICENSE BLOCK ***** | 
					
						
							| 
									
										
										
										
											2003-04-28 02:15:46 +00:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef __QUICKTIME_EXPORT_H__
 | 
					
						
							|  |  |  | #define __QUICKTIME_EXPORT_H__
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined (_WIN32) || (__APPLE__)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-07 12:55:18 +00:00
										 |  |  | #define __AIFF__
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-02 11:23:11 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-10 09:31:41 +00:00
										 |  |  | #define QTAUDIO_FLAG_RESAMPLE_NOHQ 1
 | 
					
						
							|  |  |  | #define QTAUDIO_FLAG_CODEC_ISCBR 2
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-02 11:23:11 +00:00
										 |  |  | /*Codec list*/ | 
					
						
							|  |  |  | typedef struct QuicktimeCodecTypeDesc { | 
					
						
							|  |  |  | 	int codecType; | 
					
						
							|  |  |  | 	int rnatmpvalue; | 
					
						
							|  |  |  | 	char * codecName; | 
					
						
							|  |  |  | } QuicktimeCodecTypeDesc ; | 
					
						
							| 
									
										
										
										
											2009-11-20 10:37:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-28 02:15:46 +00:00
										 |  |  | // quicktime movie output functions
 | 
					
						
							| 
									
										
											  
											
												Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:
Render:
- Full cleanup of render code, removing *all* globals and bad level calls
  all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
  default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
  tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.
Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
  easier use of movies in Blender
PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
  code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)
3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
  (pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
  rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!
Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
  with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
  done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
  window. (yes, output nodes to render-result, and to files, is on the list!)
The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
  system should be built from scratch. I can't really understand this code...
  I expect it is not much needed, especially with advanced layer/passes
  control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
  recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
  effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
  to check first the option to render to a Image window, so Blender can become
  a true single-window application. :)
  For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again
OK... thats what I can quickly recall. Now go compiling!
											
										 
											2006-01-23 22:05:47 +00:00
										 |  |  | struct RenderData; | 
					
						
							| 
									
										
										
										
											2009-11-20 10:37:50 +00:00
										 |  |  | struct Scene; | 
					
						
							| 
									
										
										
										
											2009-12-02 14:39:49 +00:00
										 |  |  | struct wmOperatorType; | 
					
						
							| 
									
										
										
										
											2009-12-22 15:20:31 +00:00
										 |  |  | struct ReportList; | 
					
						
							| 
									
										
										
										
											2003-04-28 02:15:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-22 15:20:31 +00:00
										 |  |  | 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); | 
					
						
							| 
									
										
										
										
											2003-04-28 02:15:46 +00:00
										 |  |  | void end_qt(void); | 
					
						
							| 
									
										
										
										
											2010-01-08 14:42:52 +00:00
										 |  |  | void filepath_qt(char *string, struct RenderData *rd); | 
					
						
							| 
									
										
										
										
											2003-04-28 02:15:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-02 11:23:11 +00:00
										 |  |  | /*RNA helper functions */ | 
					
						
							| 
									
										
										
										
											2009-11-20 10:37:50 +00:00
										 |  |  | void quicktime_verify_image_type(struct RenderData *rd); //used by RNA for defaults values init, if needed
 | 
					
						
							| 
									
										
										
										
											2010-04-10 09:31:41 +00:00
										 |  |  | /*Video codec type*/ | 
					
						
							|  |  |  | int quicktime_get_num_videocodecs(); | 
					
						
							|  |  |  | 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(); | 
					
						
							|  |  |  | QuicktimeCodecTypeDesc* quicktime_get_audiocodecType_desc(int indexValue); | 
					
						
							|  |  |  | int quicktime_rnatmpvalue_from_audiocodectype(int codecType); | 
					
						
							|  |  |  | int quicktime_audiocodecType_from_rnatmpvalue(int rnatmpvalue); | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2009-12-02 11:23:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifndef USE_QTKIT
 | 
					
						
							| 
									
										
										
										
											2009-12-02 14:39:49 +00:00
										 |  |  | void SCENE_OT_render_data_set_quicktime_codec(struct wmOperatorType *ot); //Operator to raise quicktime standard dialog to request codec settings
 | 
					
						
							| 
									
										
										
										
											2009-12-02 11:23:11 +00:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-20 10:37:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-01-11 10:58:58 +00:00
										 |  |  | void free_qtcomponentdata(void); | 
					
						
							| 
									
										
										
										
											2009-01-04 14:14:06 +00:00
										 |  |  | void makeqtstring(struct RenderData *rd, char *string);		//for playanim.c
 | 
					
						
							| 
									
										
										
										
											2003-04-28 02:15:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-02 11:23:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #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
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-28 02:15:46 +00:00
										 |  |  | #endif //(_WIN32) || (__APPLE__)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif  // __QUICKTIME_IMP_H__
 |