Fix [#21351] PROPERTIES: Resolution changes based solely on changing

encoding format

Bypassed existing hardcoded ffmpeg presets that executed when changing
format, replaced with bpy presets.

Leaving old code there for now, haven't got python/rna access to the ffmpeg
id properties.. Anyone know how to do this? 
Code snippets here: http://www.pasteall.org/11657/c
This commit is contained in:
Matt Ebb 2010-03-13 00:17:52 +00:00
parent a4de5e06af
commit 25a14bad61
10 changed files with 124 additions and 2 deletions

@ -0,0 +1,9 @@
is_ntsc = (bpy.context.scene.render.fps != 25)
bpy.context.scene.render.ffmpeg_format = "DV"
bpy.context.scene.render.resolution_x = 720
if is_ntsc:
bpy.context.scene.render.resolution_y = 480
else:
bpy.context.scene.render.resolution_y = 576

@ -0,0 +1,18 @@
is_ntsc = (bpy.context.scene.render.fps != 25)
bpy.context.scene.render.ffmpeg_format = "MPEG2"
bpy.context.scene.render.resolution_x = 720
if is_ntsc:
bpy.context.scene.render.resolution_y = 480
bpy.context.scene.render.ffmpeg_gopsize = 18
else:
bpy.context.scene.render.resolution_y = 576
bpy.context.scene.render.ffmpeg_gopsize = 15
bpy.context.scene.render.ffmpeg_video_bitrate = 6000
bpy.context.scene.render.ffmpeg_maxrate = 9000
bpy.context.scene.render.ffmpeg_minrate = 0
bpy.context.scene.render.ffmpeg_buffersize = 224*8
bpy.context.scene.render.ffmpeg_packetsize = 2048
bpy.context.scene.render.ffmpeg_muxrate = 10080000

@ -0,0 +1,18 @@
is_ntsc = (bpy.context.scene.render.fps != 25)
bpy.context.scene.render.ffmpeg_format = "MPEG2"
bpy.context.scene.render.resolution_x = 480
if is_ntsc:
bpy.context.scene.render.resolution_y = 480
bpy.context.scene.render.ffmpeg_gopsize = 18
else:
bpy.context.scene.render.resolution_y = 576
bpy.context.scene.render.ffmpeg_gopsize = 15
bpy.context.scene.render.ffmpeg_video_bitrate = 2040
bpy.context.scene.render.ffmpeg_maxrate = 2516
bpy.context.scene.render.ffmpeg_minrate = 0
bpy.context.scene.render.ffmpeg_buffersize = 224*8
bpy.context.scene.render.ffmpeg_packetsize = 2324
bpy.context.scene.render.ffmpeg_muxrate = 0

@ -0,0 +1,18 @@
is_ntsc = (bpy.context.scene.render.fps != 25)
bpy.context.scene.render.ffmpeg_format = "MPEG1"
bpy.context.scene.render.resolution_x = 352
if is_ntsc:
bpy.context.scene.render.resolution_y = 240
bpy.context.scene.render.ffmpeg_gopsize = 18
else:
bpy.context.scene.render.resolution_y = 288
bpy.context.scene.render.ffmpeg_gopsize = 15
bpy.context.scene.render.ffmpeg_video_bitrate = 1150
bpy.context.scene.render.ffmpeg_maxrate = 1150
bpy.context.scene.render.ffmpeg_minrate = 1150
bpy.context.scene.render.ffmpeg_buffersize = 40*8
bpy.context.scene.render.ffmpeg_packetsize = 2324
bpy.context.scene.render.ffmpeg_muxrate = 2352 * 75 * 8

@ -0,0 +1,16 @@
is_ntsc = (bpy.context.scene.render.fps != 25)
bpy.context.scene.render.ffmpeg_format = "H264"
bpy.context.scene.render.ffmpeg_codec = "H264"
if is_ntsc:
bpy.context.scene.render.ffmpeg_gopsize = 18
else:
bpy.context.scene.render.ffmpeg_gopsize = 15
bpy.context.scene.render.ffmpeg_video_bitrate = 6000
bpy.context.scene.render.ffmpeg_maxrate = 9000
bpy.context.scene.render.ffmpeg_minrate = 0
bpy.context.scene.render.ffmpeg_buffersize = 224*8
bpy.context.scene.render.ffmpeg_packetsize = 2048
bpy.context.scene.render.ffmpeg_muxrate = 10080000

@ -0,0 +1,16 @@
is_ntsc = (bpy.context.scene.render.fps != 25)
bpy.context.scene.render.ffmpeg_format = "OGG"
bpy.context.scene.render.ffmpeg_codec = "THEORA"
if is_ntsc:
bpy.context.scene.render.ffmpeg_gopsize = 18
else:
bpy.context.scene.render.ffmpeg_gopsize = 15
bpy.context.scene.render.ffmpeg_video_bitrate = 6000
bpy.context.scene.render.ffmpeg_maxrate = 9000
bpy.context.scene.render.ffmpeg_minrate = 0
bpy.context.scene.render.ffmpeg_buffersize = 224*8
bpy.context.scene.render.ffmpeg_packetsize = 2048
bpy.context.scene.render.ffmpeg_muxrate = 10080000

@ -0,0 +1,16 @@
is_ntsc = (bpy.context.scene.render.fps != 25)
bpy.context.scene.render.ffmpeg_format = "AVI"
bpy.context.scene.render.ffmpeg_codec = "XVID"
if is_ntsc:
bpy.context.scene.render.ffmpeg_gopsize = 18
else:
bpy.context.scene.render.ffmpeg_gopsize = 15
bpy.context.scene.render.ffmpeg_video_bitrate = 6000
bpy.context.scene.render.ffmpeg_maxrate = 9000
bpy.context.scene.render.ffmpeg_minrate = 0
bpy.context.scene.render.ffmpeg_buffersize = 224*8
bpy.context.scene.render.ffmpeg_packetsize = 2048
bpy.context.scene.render.ffmpeg_muxrate = 10080000

@ -29,6 +29,13 @@ class RENDER_MT_presets(bpy.types.Menu):
draw = bpy.types.Menu.draw_preset
class RENDER_MT_ffmpeg_presets(bpy.types.Menu):
bl_label = "FFMPEG Presets"
preset_subdir = "ffmpeg"
preset_operator = "script.python_file_run"
draw = bpy.types.Menu.draw_preset
class RenderButtonsPanel(bpy.types.Panel):
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
@ -379,6 +386,8 @@ class RENDER_PT_encoding(RenderButtonsPanel):
rd = context.scene.render
wide_ui = context.region.width > narrowui
layout.menu("RENDER_MT_ffmpeg_presets", text="Presets")
split = layout.split()
col = split.column()
@ -627,6 +636,7 @@ class RENDER_PT_bake(RenderButtonsPanel):
classes = [
RENDER_MT_presets,
RENDER_MT_ffmpeg_presets,
RENDER_PT_render,
RENDER_PT_layers,
RENDER_PT_dimensions,

@ -1242,7 +1242,8 @@ void ffmpeg_verify_image_type(RenderData *rd)
rd->ffcodecdata.video_bitrate <= 1) {
rd->ffcodecdata.codec = CODEC_ID_MPEG2VIDEO;
ffmpeg_set_preset(rd, FFMPEG_PRESET_DVD);
/* Don't set preset, disturbs render resolution.
* ffmpeg_set_preset(rd, FFMPEG_PRESET_DVD); */
}
audio= 1;

@ -132,7 +132,7 @@ EnumPropertyItem image_type_items[] = {
{R_H264, "H264", ICON_FILE_MOVIE, "H.264", ""},
{R_XVID, "XVID", ICON_FILE_MOVIE, "Xvid", ""},
{R_THEORA, "THEORA", ICON_FILE_MOVIE, "Ogg Theora", ""},
{R_FFMPEG, "FFMPEG", ICON_FILE_MOVIE, "FFMpeg", ""},
{R_FFMPEG, "FFMPEG", ICON_FILE_MOVIE, "MPEG", ""},
#endif
{R_FRAMESERVER, "FRAMESERVER", ICON_FILE_SCRIPT, "Frame Server", ""},
{0, NULL, 0, NULL, NULL}};