Merged changes in the trunk up to revision 26719.
[blender-staging.git] / source / blender / makesrna / intern / rna_scene.c
index 352931294aed204dc32330471d17b4fb460ff271..94d18c48703019b4e2681402714ea2d1b5185142 100644 (file)
@@ -107,6 +107,7 @@ EnumPropertyItem snap_element_items[] = {
 #include "BKE_depsgraph.h"
 #include "BKE_image.h"
 #include "BKE_mesh.h"
+#include "BKE_sound.h"
 
 #include "BLI_threads.h"
 #include "BLI_editVert.h"
@@ -287,10 +288,11 @@ static void rna_Scene_preview_range_end_frame_set(PointerRNA *ptr, int value)
        data->r.pefra= value;
 }
 
-static void rna_Scene_frame_update(Main *bmain, Scene *unused, PointerRNA *ptr)
+static void rna_Scene_frame_update(bContext *C, PointerRNA *ptr)
 {
        //Scene *scene= ptr->id.data;
        //ED_update_for_newframe(C);
+       sound_seek_scene(C);
 }
 
 static int rna_Scene_active_keying_set_editable(PointerRNA *ptr)
@@ -352,10 +354,19 @@ static int rna_SceneRenderData_threads_get(PointerRNA *ptr)
 }
 
 static int rna_SceneRenderData_save_buffers_get(PointerRNA *ptr)
+{
+       RenderData *rd= (RenderData*)ptr->data;
+       if(rd->mode & R_BORDER)
+               return 0;
+       else
+               return (rd->scemode & (R_EXR_TILE_FILE|R_FULL_SAMPLE)) != 0;
+}
+
+static int rna_SceneRenderData_full_sample_get(PointerRNA *ptr)
 {
        RenderData *rd= (RenderData*)ptr->data;
 
-       return (rd->scemode & (R_EXR_TILE_FILE|R_FULL_SAMPLE)) != 0;
+       return (rd->scemode & R_FULL_SAMPLE) && !(rd->mode & R_BORDER);
 }
 
 static void rna_SceneRenderData_file_format_set(PointerRNA *ptr, int value)
@@ -1739,12 +1750,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
 #ifdef WITH_FFMPEG
                {R_H264, "H264", ICON_FILE_MOVIE, "H.264", ""},
                {R_XVID, "XVID", ICON_FILE_MOVIE, "Xvid", ""},
-               // XXX broken
-#if 0
-#ifdef WITH_OGG
                {R_THEORA, "THEORA", ICON_FILE_MOVIE, "Ogg Theora", ""},
-#endif
-#endif
                {R_FFMPEG, "FFMPEG", ICON_FILE_MOVIE, "FFMpeg", ""},
 #endif
                {R_FRAMESERVER, "FRAMESERVER", ICON_FILE_SCRIPT, "Frame Server", ""},
@@ -1795,16 +1801,15 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
                {FFMPEG_DV, "DV", 0, "DV", ""},
                {FFMPEG_H264, "H264", 0, "H.264", ""},
                {FFMPEG_XVID, "XVID", 0, "Xvid", ""},
-               // XXX broken
-#if 0
-#ifdef WITH_OGG
                {FFMPEG_OGG, "OGG", 0, "Ogg", ""},
-#endif
-#endif
+               {FFMPEG_MKV, "MKV", 0, "Matroska", ""},
                {FFMPEG_FLV, "FLASH", 0, "Flash", ""},
+               {FFMPEG_WAV, "WAV", 0, "Wav", ""},
+               {FFMPEG_MP3, "MP3", 0, "Mp3", ""},
                {0, NULL, 0, NULL, NULL}};
-               
+
        static EnumPropertyItem ffmpeg_codec_items[] = {
+               {CODEC_ID_NONE, "NONE", 0, "None", ""},
                {CODEC_ID_MPEG1VIDEO, "MPEG1", 0, "MPEG-1", ""},
                {CODEC_ID_MPEG2VIDEO, "MPEG2", 0, "MPEG-2", ""},
                {CODEC_ID_MPEG4, "MPEG4", 0, "MPEG-4(divx)", ""},
@@ -1812,18 +1817,19 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
                {CODEC_ID_DVVIDEO, "DV", 0, "DV", ""},
                {CODEC_ID_H264, "H264", 0, "H.264", ""},
                {CODEC_ID_XVID, "XVID", 0, "Xvid", ""},
-#ifdef WITH_OGG
                {CODEC_ID_THEORA, "THEORA", 0, "Theora", ""},
-#endif
                {CODEC_ID_FLV1, "FLASH", 0, "Flash Video", ""},
+               {CODEC_ID_FFV1, "FFV1", 0, "FFmpeg video codec #1", ""},
                {0, NULL, 0, NULL, NULL}};
-               
+
        static EnumPropertyItem ffmpeg_audio_codec_items[] = {
+               {CODEC_ID_NONE, "NONE", 0, "None", ""},
                {CODEC_ID_MP2, "MP2", 0, "MP2", ""},
                {CODEC_ID_MP3, "MP3", 0, "MP3", ""},
                {CODEC_ID_AC3, "AC3", 0, "AC3", ""},
                {CODEC_ID_AAC, "AAC", 0, "AAC", ""},
                {CODEC_ID_VORBIS, "VORBIS", 0, "Vorbis", ""},
+               {CODEC_ID_FLAC, "FLAC", 0, "FLAC", ""},
                {CODEC_ID_PCM_S16LE, "PCM", 0, "PCM", ""},
                {0, NULL, 0, NULL, NULL}};
 #endif
@@ -2056,7 +2062,6 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
        RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
        
        /* FFMPEG Audio*/
-       
        prop= RNA_def_property(srna, "ffmpeg_audio_codec", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_bitflag_sdna(prop, NULL, "ffcodecdata.audio_codec");
        RNA_def_property_enum_items(prop, ffmpeg_audio_codec_items);
@@ -2069,11 +2074,6 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Bitrate", "Audio bitrate(kb/s)");
        RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
        
-       prop= RNA_def_property(srna, "ffmpeg_multiplex_audio", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "ffcodecdata.flags", FFMPEG_MULTIPLEX_AUDIO);
-       RNA_def_property_ui_text(prop, "Multiplex Audio", "Interleave audio with the output video");
-       RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
-
        prop= RNA_def_property(srna, "ffmpeg_audio_mixrate", PROP_INT, PROP_NONE);
        RNA_def_property_int_sdna(prop, NULL, "ffcodecdata.audio_mixrate");
        RNA_def_property_range(prop, 8000, 192000);
@@ -2253,7 +2253,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "use_border", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "mode", R_BORDER);
-       RNA_def_property_ui_text(prop, "Border", "Render a user-defined border region, within the frame size.");
+       RNA_def_property_ui_text(prop, "Border", "Render a user-defined border region, within the frame size. Note, this disables save_buffers and full_sample.");
        RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
 
        prop= RNA_def_property(srna, "border_min_x", PROP_FLOAT, PROP_NONE);
@@ -2346,6 +2346,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "full_sample", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_FULL_SAMPLE);
+       RNA_def_property_boolean_funcs(prop, "rna_SceneRenderData_full_sample_get", NULL);
        RNA_def_property_ui_text(prop, "Full Sample","Save for every anti-aliasing sample the entire RenderLayer results. This solves anti-aliasing issues with compositing.");
        RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
        
@@ -2704,6 +2705,7 @@ void RNA_def_scene(BlenderRNA *brna)
        RNA_def_property_int_sdna(prop, NULL, "r.cfra");
        RNA_def_property_range(prop, MINAFRAME, MAXFRAME);
        RNA_def_property_ui_text(prop, "Current Frame", "");
+       RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
        RNA_def_property_update(prop, NC_SCENE|ND_FRAME, "rna_Scene_frame_update");
        
        prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_TIME);