diff options
-rw-r--r-- | release/scripts/startup/bl_ui/space_sequencer.py | 18 | ||||
-rw-r--r-- | source/blender/blenkernel/BKE_sound.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/sound.c | 9 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_sound_types.h | 6 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_sound.c | 28 |
5 files changed, 63 insertions, 0 deletions
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index 94bad5459c9..3c10f393503 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -1642,6 +1642,24 @@ class SEQUENCER_PT_source(SequencerButtonsPanel, Panel): split.operator("sound.pack", icon='UGLYPACKAGE', text="") layout.prop(sound, "use_memory_cache") + + col = layout.box() + col = col.column(align=True) + split = col.split(factor=0.5, align=False) + split.alignment = 'RIGHT' + split.label(text="Samplerate") + split.alignment = 'LEFT' + if sound.samplerate <= 0: + split.label(text="Unknown") + else: + split.label(text="%d Hz." % sound.samplerate, translate=False) + + split = col.split(factor=0.5, align=False) + split.alignment = 'RIGHT' + split.label(text="Channels") + split.alignment = 'LEFT' + txt_channels = sound.bl_rna.properties["channels"].enum_items[sound.bl_rna.properties["channels"].enum_items.find(sound.channels)].name + split.label(text=txt_channels) else: if strip_type == 'IMAGE': col = layout.column() diff --git a/source/blender/blenkernel/BKE_sound.h b/source/blender/blenkernel/BKE_sound.h index 8931418e49c..edb301f06bf 100644 --- a/source/blender/blenkernel/BKE_sound.h +++ b/source/blender/blenkernel/BKE_sound.h @@ -20,6 +20,7 @@ struct Depsgraph; struct Main; struct Sequence; struct bSound; +struct SoundInfo; typedef struct SoundWaveform { int length; @@ -78,6 +79,7 @@ typedef enum eSoundChannels { typedef struct SoundInfo { struct { eSoundChannels channels; + int samplerate; } specs; float length; } SoundInfo; diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index 864a4f3281b..de5589cf5dc 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -264,6 +264,14 @@ bSound *BKE_sound_new_file(Main *bmain, const char *filepath) BLI_strncpy(sound->filepath, filepath, FILE_MAX); /* sound->type = SOUND_TYPE_FILE; */ /* XXX unused currently */ + /* Extract sound specs for bSound */ + SoundInfo info; + bool success = BKE_sound_info_get(bmain, sound, &info); + if (success) { + sound->samplerate = info.specs.samplerate; + sound->audio_channels = info.specs.channels; + } + sound->spinlock = MEM_mallocN(sizeof(SpinLock), "sound_spinlock"); BLI_spin_init(sound->spinlock); @@ -1202,6 +1210,7 @@ static bool sound_info_from_playback_handle(void *playback_handle, SoundInfo *so AUD_SoundInfo info = AUD_getInfo(playback_handle); sound_info->specs.channels = (eSoundChannels)info.specs.channels; sound_info->length = info.length; + sound_info->specs.samplerate = info.specs.rate; return true; } diff --git a/source/blender/makesdna/DNA_sound_types.h b/source/blender/makesdna/DNA_sound_types.h index df59dd84662..ba926f0f4fa 100644 --- a/source/blender/makesdna/DNA_sound_types.h +++ b/source/blender/makesdna/DNA_sound_types.h @@ -77,6 +77,12 @@ typedef struct bSound { void *spinlock; /* XXX unused currently (SOUND_TYPE_LIMITER) */ /* float start, end; */ + + /* Description of Audio channels, as of eSoundChannels*/ + int audio_channels; + + int samplerate; + } bSound; /* XXX unused currently */ diff --git a/source/blender/makesrna/intern/rna_sound.c b/source/blender/makesrna/intern/rna_sound.c index 3d51f80adde..2714b4157fd 100644 --- a/source/blender/makesrna/intern/rna_sound.c +++ b/source/blender/makesrna/intern/rna_sound.c @@ -12,6 +12,22 @@ #include "DNA_sound_types.h" +#include "BKE_sound.h" + +/* Enumeration for Audio Channels, compatible with eSoundChannels */ +const EnumPropertyItem rna_enum_audio_channels_items[] = { + {SOUND_CHANNELS_INVALID, "INVALID", ICON_NONE, "Invalid", "Invalid"}, + {SOUND_CHANNELS_MONO, "MONO", ICON_NONE, "Mono", "Mono"}, + {SOUND_CHANNELS_STEREO, "STEREO", ICON_NONE, "Stereo", "Stereo"}, + {SOUND_CHANNELS_STEREO_LFE, "STEREO_LFE", ICON_NONE, "Stereo LFE", "Stereo FX"}, + {SOUND_CHANNELS_SURROUND4, "CHANNELS_4", ICON_NONE, "4 Channels", "4 Channels"}, + {SOUND_CHANNELS_SURROUND5, "CHANNELS_5", ICON_NONE, "5 Channels", "5 Channels"}, + {SOUND_CHANNELS_SURROUND51, "SURROUND_51", ICON_NONE, "5.1 Surround", "5.1 Surround"}, + {SOUND_CHANNELS_SURROUND61, "SURROUND_61", ICON_NONE, "6.1 Surround", "6.1 Surround"}, + {SOUND_CHANNELS_SURROUND71, "SURROUND_71", ICON_NONE, "7.1 Surround", "7.1 Surround"}, + {0, NULL, 0, NULL, NULL}, +}; + #ifdef RNA_RUNTIME # include "BKE_context.h" @@ -70,6 +86,18 @@ static void rna_def_sound(BlenderRNA *brna) "If the file contains multiple audio channels they are rendered to a single one"); RNA_def_property_update(prop, 0, "rna_Sound_update"); + prop = RNA_def_property(srna, "samplerate", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "samplerate"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Samplerate", "Samplerate of the audio in Hz"); + + prop = RNA_def_property(srna, "channels", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "audio_channels"); + RNA_def_property_enum_items(prop, rna_enum_audio_channels_items); + RNA_def_property_enum_default(prop, SOUND_CHANNELS_INVALID); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Audio channels", "Definition of audio channels"); + RNA_api_sound(srna); } |