[pitivi] proxy: Allow audio stream outside of container
- From: Alexandru Băluț <alexbalut src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] proxy: Allow audio stream outside of container
- Date: Wed, 26 Jul 2017 21:40:12 +0000 (UTC)
commit 01a1c54f173959d23ac63d42a2025dc6899e56d3
Author: Stefan Popa <stefanpopa2209 gmail com>
Date: Fri Jul 21 20:49:01 2017 +0300
proxy: Allow audio stream outside of container
Allows using supported audio streams even if they are not inside
a container.
Fixes T7756.
Reviewed-by: Alex Băluț <alexandru balut gmail com>
Differential Revision: https://phabricator.freedesktop.org/D1800
pitivi/utils/proxy.py | 32 +++++++++++++++++++++++++-------
tests/samples/mp3_sample.mp3 | Bin 0 -> 451854 bytes
tests/test_media_library.py | 3 +++
3 files changed, 28 insertions(+), 7 deletions(-)
---
diff --git a/pitivi/utils/proxy.py b/pitivi/utils/proxy.py
index ec307c5..f5ce771 100644
--- a/pitivi/utils/proxy.py
+++ b/pitivi/utils/proxy.py
@@ -87,17 +87,25 @@ class ProxyManager(GObject.Object, Loggable):
object)),
}
+ WHITELIST_CONTAINER_CAPS = ["video/quicktime", "application/ogg",
+ "video/x-matroska", "video/webm"]
+ WHITELIST_AUDIO_CAPS = ["audio/mpeg", "audio/x-vorbis",
+ "audio/x-raw", "audio/x-flac"]
+ WHITELIST_VIDEO_CAPS = ["video/x-h264", "image/jpeg",
+ "video/x-raw", "video/x-vp8",
+ "video/x-theora"]
+
WHITELIST_FORMATS = []
- for container in ["video/quicktime", "application/ogg",
- "video/x-matroska", "video/webm"]:
- for audio in ["audio/mpeg", "audio/x-vorbis",
- "audio/x-raw", "audio/x-flac"]:
- for video in ["video/x-h264", "image/jpeg",
- "video/x-raw", "video/x-vp8",
- "video/x-theora"]:
+ for container in WHITELIST_CONTAINER_CAPS:
+ for audio in WHITELIST_AUDIO_CAPS:
+ for video in WHITELIST_VIDEO_CAPS:
WHITELIST_FORMATS.append(createEncodingProfileSimple(
container, audio, video))
+ for audio in WHITELIST_AUDIO_CAPS:
+ a = GstPbutils.EncodingAudioProfile.new(Gst.Caps(audio), None, None, 0)
+ WHITELIST_FORMATS.append(a)
+
proxy_extension = "proxy.mkv"
def __init__(self, app):
@@ -133,6 +141,16 @@ class ProxyManager(GObject.Object, Loggable):
return not info.get_caps().intersect(profile.get_format()).is_empty()
info = asset.get_info()
+ if isinstance(encoding_profile, GstPbutils.EncodingAudioProfile):
+ if isinstance(info.get_stream_info(), GstPbutils.DiscovererContainerInfo):
+ return False
+ audios = info.get_audio_streams()
+ if len(audios) != 1 or not capsMatch(audios[0], encoding_profile):
+ return False
+ if info.get_video_streams():
+ return False
+ return True
+
container = info.get_stream_info()
if container:
if not capsMatch(container, encoding_profile):
diff --git a/tests/samples/mp3_sample.mp3 b/tests/samples/mp3_sample.mp3
new file mode 100644
index 0000000..4226ded
Binary files /dev/null and b/tests/samples/mp3_sample.mp3 differ
diff --git a/tests/test_media_library.py b/tests/test_media_library.py
index cb1b209..afa38f2 100644
--- a/tests/test_media_library.py
+++ b/tests/test_media_library.py
@@ -217,6 +217,9 @@ class TestMediaLibrary(BaseTestMediaLibrary):
self.assertEqual(asset.creation_progress, 100)
self.assertEqual(asset.get_proxy(), proxy)
+ def test_supported_out_of_container_audio(self):
+ self.runCheckImport(["mp3_sample.mp3"], check_no_transcoding=True)
+
def testMissingUriDisplayed(self):
with common.created_project_file() as uri:
self._customSetUp(project_uri=uri)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]