Revision: 24701
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24701
Author:   damien78
Date:     2009-11-20 11:37:50 +0100 (Fri, 20 Nov 2009)

Log Message:
-----------
Quicktime-qtkit : encoding settings now in blender ui (encoding panel)

- added "QuicktimeCodecSettings" struct in DNA
- old "QuicktimeCodecData" opaque struct is  nowdeprecated (read only use when 
QuicktimeCodecSettings is not set)
- fixed small bug when importing deep color movies

Note that you may need Final Cut Pro installed to be able to use the DVCPRO HD 
codecs

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_render.py
    trunk/blender/source/blender/makesdna/DNA_scene_types.h
    trunk/blender/source/blender/makesrna/SConscript
    trunk/blender/source/blender/makesrna/intern/CMakeLists.txt
    trunk/blender/source/blender/makesrna/intern/SConscript
    trunk/blender/source/blender/makesrna/intern/rna_scene.c
    trunk/blender/source/blender/quicktime/apple/qtkit_export.m
    trunk/blender/source/blender/quicktime/apple/qtkit_import.m
    trunk/blender/source/blender/quicktime/apple/quicktime_export.c
    trunk/blender/source/blender/quicktime/quicktime_export.h

Modified: trunk/blender/release/scripts/ui/properties_render.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_render.py       2009-11-20 
10:34:31 UTC (rev 24700)
+++ trunk/blender/release/scripts/ui/properties_render.py       2009-11-20 
10:37:50 UTC (rev 24701)
@@ -337,6 +337,31 @@
             split.itemR(rd, "tiff_bit")
 
 
+class RENDER_PT_QTencoding(RenderButtonsPanel):
+    bl_label = "Encoding"
+    bl_default_closed = True
+    COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+    def poll(self, context):
+        rd = context.scene.render_data
+        return rd.file_format in ('QUICKTIME_QTKIT') # QUICKTIME will be added 
later
+
+    def draw(self, context):
+        layout = self.layout
+
+        rd = context.scene.render_data
+        wide_ui = context.region.width > narrowui
+
+        split = layout.split()
+
+        split.itemR(rd, "quicktime_codec_type")
+
+        split = layout.split()
+
+        if rd.file_format == 'QUICKTIME_QTKIT':
+            split.itemR(rd, "quicktime_codec_spatial_quality", text="Quality")
+
+
 class RENDER_PT_encoding(RenderButtonsPanel):
     bl_label = "Encoding"
     bl_default_closed = True
@@ -516,6 +541,7 @@
 bpy.types.register(RENDER_PT_antialiasing)
 bpy.types.register(RENDER_PT_shading)
 bpy.types.register(RENDER_PT_output)
+bpy.types.register(RENDER_PT_QTencoding)
 bpy.types.register(RENDER_PT_encoding)
 bpy.types.register(RENDER_PT_performance)
 bpy.types.register(RENDER_PT_post_processing)

Modified: trunk/blender/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_scene_types.h     2009-11-20 
10:34:31 UTC (rev 24700)
+++ trunk/blender/source/blender/makesdna/DNA_scene_types.h     2009-11-20 
10:37:50 UTC (rev 24701)
@@ -77,7 +77,7 @@
 } AviCodecData;
 
 typedef struct QuicktimeCodecData {
-
+       /*Old quicktime implementation compatibility fields, read only in 2.5 - 
deprecated*/
        void                    *cdParms;   /* codec/compressor options */
        void                    *pad;       /* padding */
 
@@ -86,7 +86,23 @@
 
        char                    qtcodecname[128];
 } QuicktimeCodecData;
+       
+typedef struct QuicktimeCodecSettings {
+       /* Codec settings detailed for 2.5 implementation*/
+       int codecType; /* Types defined in quicktime_export.h */
+       int     codecSpatialQuality; /* in 0-100 scale, to be translated in 
0-1024 for qt use */
 
+       /* Settings not available in current QTKit API */
+       int     codec;
+       int     codecFlags;
+       int     colorDepth;
+       int     codecTemporalQuality; /* in 0-100 scale, to be translated in 
0-1024 for qt use */
+       int     minSpatialQuality; /* in 0-100 scale, to be translated in 
0-1024 for qt use */
+       int     minTemporalQuality; /* in 0-100 scale, to be translated in 
0-1024 for qt use */
+       int     keyFrameRate;
+       int     bitRate;        /* bitrate in bps */
+} QuicktimeCodecSettings;
+
 typedef struct FFMpegCodecData {
        int type;
        int codec;
@@ -176,6 +192,7 @@
        
        struct AviCodecData *avicodecdata;
        struct QuicktimeCodecData *qtcodecdata;
+       struct QuicktimeCodecSettings qtcodecsettings;
        struct FFMpegCodecData ffcodecdata;
        
        int cfra, sfra, efra;   /* frames as in 'images' */

Modified: trunk/blender/source/blender/makesrna/SConscript
===================================================================
--- trunk/blender/source/blender/makesrna/SConscript    2009-11-20 10:34:31 UTC 
(rev 24700)
+++ trunk/blender/source/blender/makesrna/SConscript    2009-11-20 10:37:50 UTC 
(rev 24701)
@@ -30,6 +30,7 @@
 
 if env['WITH_BF_QUICKTIME']:
        defs.append('WITH_QUICKTIME')
+       incs += ' ../quicktime'
 
 if env['WITH_BF_LCMS']:
        defs.append('WITH_LCMS')

Modified: trunk/blender/source/blender/makesrna/intern/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/makesrna/intern/CMakeLists.txt 2009-11-20 
10:34:31 UTC (rev 24700)
+++ trunk/blender/source/blender/makesrna/intern/CMakeLists.txt 2009-11-20 
10:37:50 UTC (rev 24701)
@@ -63,6 +63,7 @@
 ENDIF(WITH_DDS)
 
 IF(WITH_QUICKTIME)
+       SET(INC "${INC} ../../quicktime")
        ADD_DEFINITIONS(-DWITH_QUICKTIME)
 ENDIF(WITH_QUICKTIME)
 

Modified: trunk/blender/source/blender/makesrna/intern/SConscript
===================================================================
--- trunk/blender/source/blender/makesrna/intern/SConscript     2009-11-20 
10:34:31 UTC (rev 24700)
+++ trunk/blender/source/blender/makesrna/intern/SConscript     2009-11-20 
10:37:50 UTC (rev 24701)
@@ -52,6 +52,7 @@
 
 if env['WITH_BF_QUICKTIME']:
        defs.append('WITH_QUICKTIME')
+       incs += ' ../../quicktime'
 
 if env['WITH_BF_LCMS']:
        defs.append('WITH_LCMS')

Modified: trunk/blender/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_scene.c    2009-11-20 
10:34:31 UTC (rev 24700)
+++ trunk/blender/source/blender/makesrna/intern/rna_scene.c    2009-11-20 
10:37:50 UTC (rev 24701)
@@ -35,6 +35,10 @@
 /* Include for Bake Options */
 #include "RE_pipeline.h"
 
+#ifdef WITH_QUICKTIME
+#include "quicktime_export.h"
+#endif
+
 #ifdef WITH_FFMPEG
 #include "BKE_writeffmpeg.h"
 #include <libavcodec/avcodec.h> 
@@ -349,6 +353,9 @@
 #ifdef WITH_FFMPEG
        ffmpeg_verify_image_type(rd);
 #endif
+#ifdef WITH_QUICKTIME
+       quicktime_verify_image_type(rd);
+#endif
 }
 
 void rna_SceneRenderData_jpeg2k_preset_update(RenderData *rd)
@@ -1439,7 +1446,11 @@
                {R_AVICODEC, "AVICODEC", ICON_FILE_MOVIE, "AVI Codec", ""},
 #endif
 #ifdef WITH_QUICKTIME
+#      ifdef USE_QTKIT
+               {R_QUICKTIME, "QUICKTIME_QTKIT", ICON_FILE_MOVIE, "QuickTime", 
""},
+#      else
                {R_QUICKTIME, "QUICKTIME", ICON_FILE_MOVIE, "QuickTime", ""},
+#      endif
 #endif
 #ifdef __sgi
                {R_MOVIE, "MOVIE", ICON_FILE_MOVIE, "Movie", ""},
@@ -1486,6 +1497,23 @@
                {16, "16", 0, "16", "16 bit color channels"},
                {0, NULL, 0, NULL, NULL}};
 #endif
+       
+#ifdef WITH_QUICKTIME
+       static EnumPropertyItem quicktime_codec_type_items[] = {
+               {QT_CODECTYPE_RAW, "RAW", 0, "Uncompressed", ""},
+               {QT_CODECTYPE_JPEG, "JPEG", 0, "JPEG", ""},
+               {QT_CODECTYPE_MJPEGA, "MJPEG_A", 0, "M-JPEG A", ""},
+               {QT_CODECTYPE_MJPEGB, "MJPEG_B", 0, "M-JPEG B", ""},
+               {QT_CODECTYPE_DVCPAL, "DVCPAL", 0, "DV PAL", ""},
+               {QT_CODECTYPE_DVCNTSC, "DVCNTSC", 0, "DV/DVCPRO NTSC", ""},
+               {QT_CODECTYPE_DVCPROHD720p, "DVCPROHD720P", 0, "DVCPRO HD 
720p"},
+               {QT_CODECTYPE_DVCPROHD1080i50, "DVCPROHD1080I50", 0, "DVCPRO HD 
1080i50"},
+               {QT_CODECTYPE_DVCPROHD1080i60, "DVCPROHD1080I60", 0, "DVCPRO HD 
1080i60"},
+               {QT_CODECTYPE_MPEG4, "MPEG4", 0, "MPEG4", ""},
+               {QT_CODECTYPE_H263, "H263", 0, "H.263", ""},
+               {QT_CODECTYPE_H264, "H264", 0, "H.264", ""},
+               {0, NULL, 0, NULL, NULL}};
+#endif
 
 #ifdef WITH_FFMPEG
        static EnumPropertyItem ffmpeg_format_items[] = {
@@ -1676,6 +1704,22 @@
        RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
 #endif
 
+#ifdef WITH_QUICKTIME
+       /* QuickTime */
+       
+       prop= RNA_def_property(srna, "quicktime_codec_type", PROP_ENUM, 
PROP_NONE);
+       RNA_def_property_enum_bitflag_sdna(prop, NULL, 
"qtcodecsettings.codecType");
+       RNA_def_property_enum_items(prop, quicktime_codec_type_items);
+       RNA_def_property_ui_text(prop, "Codec", "QuickTime codec type");
+       RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+       
+       prop= RNA_def_property(srna, "quicktime_codec_spatial_quality", 
PROP_INT, PROP_NONE);
+       RNA_def_property_int_sdna(prop, NULL, 
"qtcodecsettings.codecSpatialQuality");
+       RNA_def_property_range(prop, 0, 100);
+       RNA_def_property_ui_text(prop, "Spatial quality", "Intra-frame spatial 
quality level");
+       RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);        
+#endif
+       
 #ifdef WITH_FFMPEG
        /* FFMPEG Video*/
        

Modified: trunk/blender/source/blender/quicktime/apple/qtkit_export.m
===================================================================
--- trunk/blender/source/blender/quicktime/apple/qtkit_export.m 2009-11-20 
10:34:31 UTC (rev 24700)
+++ trunk/blender/source/blender/quicktime/apple/qtkit_export.m 2009-11-20 
10:37:50 UTC (rev 24701)
@@ -74,6 +74,37 @@
 static struct QuicktimeExport *qtexport;
 
 
+static NSString *stringWithCodecType(int codecType) {
+       switch (codecType) {
+               case QT_CODECTYPE_RAW:
+                       return @"raw ";
+               case QT_CODECTYPE_MJPEGA:
+                       return @"mjpa";
+               case QT_CODECTYPE_MJPEGB:
+                       return @"mjpb";
+               case QT_CODECTYPE_DVCPAL:
+                       return @"dvcp";
+               case QT_CODECTYPE_DVCNTSC:
+                       return @"dvc ";
+               case QT_CODECTYPE_MPEG4:
+                       return @"mp4v";
+               case QT_CODECTYPE_H263:
+                       return @"h263";
+               case QT_CODECTYPE_H264:
+                       return @"avc1";
+               case QT_CODECTYPE_DVCPROHD720p:
+                       return @"dvhp";
+               case QT_CODECTYPE_DVCPROHD1080i50:
+                       return @"dvh5";
+               case QT_CODECTYPE_DVCPROHD1080i60:
+                       return @"dvh6";
+                       
+               case QT_CODECTYPE_JPEG:
+               default:
+                       return @"jpeg"; 
+       }
+}
+
 void makeqtstring (RenderData *rd, char *string) {
        char txt[64];
 
@@ -121,13 +152,22 @@
                                
                                qtexport->frameDuration = 
QTMakeTime(rd->frs_sec_base*1000, rd->frs_sec*1000);
                                
-                               /* specifying the codec attributes
-                               TODO: get these values from RenderData/scene*/
-                               qtexport->frameAttributes = [NSDictionary 
dictionaryWithObjectsAndKeys:@"jpeg",
-                                                                               
         QTAddImageCodecType,
-                                                                               
         [NSNumber numberWithLong:codecHighQuality],
-                                                                               
         QTAddImageCodecQuality,
-                                                                               
         nil];
+                               /* specifying the codec attributes : try to 
retrieve them from render data first*/
+                               if (rd->qtcodecsettings.codecType) {
+                                       qtexport->frameAttributes = 
[NSDictionary dictionaryWithObjectsAndKeys:
+                                                                               
                 stringWithCodecType(rd->qtcodecsettings.codecType),
+                                                                               
                 QTAddImageCodecType,
+                                                                               
                 [NSNumber 
numberWithLong:((rd->qtcodecsettings.codecSpatialQuality)*codecLosslessQuality)/100],
+                                                                               
                 QTAddImageCodecQuality,
+                                                                               
                 nil];
+                               }
+                               else {
+                                       qtexport->frameAttributes = 
[NSDictionary dictionaryWithObjectsAndKeys:@"jpeg",
+                                                                               
                 QTAddImageCodecType,
+                                                                               
                 [NSNumber numberWithLong:codecHighQuality],
+                                                                               
                 QTAddImageCodecQuality,
+                                                                               
                 nil];
+                               }
                                [qtexport->frameAttributes retain];
                        }
                }
@@ -206,83 +246,17 @@
 void free_qtcomponentdata(void) {
 }
 
-
-int get_qtcodec_settings(RenderData *rd) 
+void quicktime_verify_image_type(RenderData *rd)
 {
-/*
-       // get previous selected codecsetting, if any 
-       if(rd->qtcodecdata && rd->qtcodecdata->cdParms) {
-               QT_GetCodecSettingsFromScene(rd);
-               check_renderbutton_framerate(rd);
-       } else {
-               // configure the standard image compression dialog box
-               // set some default settings

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to