mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
quicktime: move qtmux plugin from -bad to -good
https://bugzilla.gnome.org/show_bug.cgi?id=636699
This commit is contained in:
parent
6630f7def2
commit
4d780297d8
8 changed files with 182 additions and 69 deletions
|
@ -191,6 +191,7 @@ EXTRA_HFILES = \
|
|||
$(top_srcdir)/gst/multipart/multipartdemux.h \
|
||||
$(top_srcdir)/gst/multipart/multipartmux.h \
|
||||
$(top_srcdir)/gst/quicktime/qtdemux.h \
|
||||
$(top_srcdir)/gst/quicktime/gstqtmux.h \
|
||||
$(top_srcdir)/gst/replaygain/gstrganalysis.h \
|
||||
$(top_srcdir)/gst/replaygain/gstrglimiter.h \
|
||||
$(top_srcdir)/gst/replaygain/gstrgvolume.h \
|
||||
|
|
|
@ -134,6 +134,7 @@
|
|||
<xi:include href="xml/element-pulsemixer.xml" />
|
||||
<xi:include href="xml/element-quarktv.xml" />
|
||||
<xi:include href="xml/element-qtdemux.xml" />
|
||||
<xi:include href="xml/element-qtmux.xml" />
|
||||
<xi:include href="xml/element-radioactv.xml" />
|
||||
<xi:include href="xml/element-revtv.xml" />
|
||||
<xi:include href="xml/element-rganalysis.xml" />
|
||||
|
|
|
@ -1687,6 +1687,20 @@ GST_TYPE_QTDEMUX
|
|||
gst_qtdemux_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-qtmux</FILE>
|
||||
<TITLE>qtmux</TITLE>
|
||||
GstQTMux
|
||||
<SUBSECTION Standard>
|
||||
GstQTMuxClass
|
||||
GST_QT_MUX
|
||||
GST_QT_MUX_CLASS
|
||||
GST_IS_QT_MUX
|
||||
GST_IS_QT_MUX_CLASS
|
||||
GST_TYPE_QT_MUX
|
||||
gst_qt_mux_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-rganalysis</FILE>
|
||||
<TITLE>rganalysis</TITLE>
|
||||
|
|
|
@ -9,6 +9,114 @@
|
|||
<package>GStreamer Good Plug-ins git</package>
|
||||
<origin>Unknown package origin</origin>
|
||||
<elements>
|
||||
<element>
|
||||
<name>gppmux</name>
|
||||
<longname>3GPP Muxer</longname>
|
||||
<class>Codec/Muxer</class>
|
||||
<description>Multiplex audio and video into a 3GPP file</description>
|
||||
<author>Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>audio_%d</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>audio/AMR, rate=(int)8000, channels=(int)[ 1, 2 ]; audio/AMR-WB, rate=(int)16000, channels=(int)[ 1, 2 ]; audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>video_%d</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>video/x-h263, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-divx, divxversion=(int)5, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, stream-format=(string)avc, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>video/quicktime, variant=(string)3gpp</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>ismlmux</name>
|
||||
<longname>ISML Muxer</longname>
|
||||
<class>Codec/Muxer</class>
|
||||
<description>Multiplex audio and video into a ISML file</description>
|
||||
<author>Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>audio_%d</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>video_%d</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-divx, divxversion=(int)5, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, stream-format=(string)avc, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>video/quicktime, variant=(string)iso</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>mj2mux</name>
|
||||
<longname>MJ2 Muxer</longname>
|
||||
<class>Codec/Muxer</class>
|
||||
<description>Multiplex audio and video into a MJ2 file</description>
|
||||
<author>Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>audio_%d</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>audio/x-raw-int, width=(int)8, depth=(int)8, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ], signed=(boolean){ true, false }; audio/x-raw-int, width=(int)16, depth=(int)16, endianness=(int){ 4321, 1234 }, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ], signed=(boolean)true</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>video_%d</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>image/x-j2c, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/x-jpc, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>video/mj2</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>mp4mux</name>
|
||||
<longname>MP4 Muxer</longname>
|
||||
<class>Codec/Muxer</class>
|
||||
<description>Multiplex audio and video into a MP4 file</description>
|
||||
<author>Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>audio_%d</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]; audio/x-alac, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>video_%d</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-divx, divxversion=(int)5, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, stream-format=(string)avc, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-mp4-part, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>video/quicktime, variant=(string)iso</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>qtdemux</name>
|
||||
<longname>QuickTime demuxer</longname>
|
||||
|
@ -42,6 +150,42 @@
|
|||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>qtmoovrecover</name>
|
||||
<longname>QT Moov Recover</longname>
|
||||
<class>Util</class>
|
||||
<description>Recovers unfinished qtmux files</description>
|
||||
<author>Thiago Santos <thiago.sousa.santos@collabora.co.uk></author>
|
||||
<pads>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>qtmux</name>
|
||||
<longname>QuickTime Muxer</longname>
|
||||
<class>Codec/Muxer</class>
|
||||
<description>Multiplex audio and video into a QuickTime file</description>
|
||||
<author>Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>audio_%d</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>audio/x-raw-int, width=(int)8, depth=(int)8, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ], signed=(boolean){ true, false }; audio/x-raw-int, width=(int)16, depth=(int)16, endianness=(int){ 4321, 1234 }, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ], signed=(boolean)true; audio/x-raw-int, width=(int)24, depth=(int)24, endianness=(int){ 4321, 1234 }, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ], signed=(boolean)true; audio/x-raw-int, width=(int)32, depth=(int)32, endianness=(int){ 4321, 1234 }, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ], signed=(boolean)true; audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]; audio/x-adpcm, layout=(string)dvi, block_align=(int)[ 64, 8096 ], channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/x-alaw, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/AMR, rate=(int)8000, channels=(int)[ 1, 2 ]; audio/AMR-WB, rate=(int)16000, channels=(int)[ 1, 2 ]; audio/x-alac, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>video_%d</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>video/x-raw-rgb, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, format=(fourcc)UYVY, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-divx, divxversion=(int)5, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h263, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, stream-format=(string)avc, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-svq, svqversion=(int)3, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-dv, systemstream=(boolean)false, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-vp8, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-qt-part, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>video/quicktime, variant=(string)apple</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>rtpxqtdepay</name>
|
||||
<longname>RTP packet depayloader</longname>
|
||||
|
|
|
@ -12,7 +12,9 @@ libgstqtdemux_la_LIBADD = \
|
|||
$(GST_BASE_LIBS) $(GST_LIBS) $(ZLIB_LIBS)
|
||||
libgstqtdemux_la_LDFLAGS = ${GST_PLUGIN_LDFLAGS}
|
||||
libgstqtdemux_la_SOURCES = quicktime.c gstrtpxqtdepay.c \
|
||||
qtdemux.c qtdemux_types.c qtdemux_dump.c qtdemux_lang.c
|
||||
qtdemux.c qtdemux_types.c qtdemux_dump.c qtdemux_lang.c \
|
||||
gstqtmux.c gstqtmoovrecover.c atoms.c atomsrecovery.c descriptors.c \
|
||||
properties.c gstqtmuxmap.c
|
||||
libgstqtdemux_la_LIBTOOLFLAGS = --tag=disable-static
|
||||
|
||||
noinst_HEADERS = \
|
||||
|
@ -23,7 +25,16 @@ noinst_HEADERS = \
|
|||
qtdemux_fourcc.h \
|
||||
qtdemux_lang.h \
|
||||
qtpalette.h \
|
||||
gstrtpxqtdepay.h
|
||||
gstrtpxqtdepay.h \
|
||||
gstqtmux.h \
|
||||
gstqtmoovrecover.h \
|
||||
atoms.h \
|
||||
atomsrecovery.h \
|
||||
descriptors.h \
|
||||
properties.h \
|
||||
fourcc.h \
|
||||
ftypcc.h \
|
||||
gstqtmuxmap.h
|
||||
|
||||
Android.mk: Makefile.am $(BUILT_SOURCES)
|
||||
androgenizer \
|
||||
|
|
|
@ -1,67 +0,0 @@
|
|||
/* Quicktime muxer plugin for GStreamer
|
||||
* Copyright (C) 2008-2010 Thiago Santos <thiagoss@embedded.ufcg.edu.br>
|
||||
* Copyright (C) 2008 Mark Nauwelaerts <mnauw@users.sf.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/*
|
||||
* Unless otherwise indicated, Source Code is licensed under MIT license.
|
||||
* See further explanation attached in License Statement (distributed in the file
|
||||
* LICENSE).
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
* of the Software, and to permit persons to whom the Software is furnished to do
|
||||
* so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "gstqtmux.h"
|
||||
#include "gstqtmoovrecover.h"
|
||||
|
||||
static gboolean
|
||||
gst_qt_mux_plugin_init (GstPlugin * plugin)
|
||||
{
|
||||
if (!gst_qt_mux_register (plugin))
|
||||
return FALSE;
|
||||
if (!gst_qt_moov_recover_register (plugin))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
||||
GST_VERSION_MINOR,
|
||||
"qtmux",
|
||||
"Quicktime Muxer plugin",
|
||||
gst_qt_mux_plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME,
|
||||
GST_PACKAGE_ORIGIN);
|
|
@ -26,6 +26,8 @@
|
|||
|
||||
#include "qtdemux.h"
|
||||
#include "gstrtpxqtdepay.h"
|
||||
#include "gstqtmux.h"
|
||||
#include "gstqtmoovrecover.h"
|
||||
|
||||
#include <gst/pbutils/pbutils.h>
|
||||
|
||||
|
@ -57,6 +59,11 @@ plugin_init (GstPlugin * plugin)
|
|||
GST_RANK_MARGINAL, GST_TYPE_RTP_XQT_DEPAY))
|
||||
return FALSE;
|
||||
|
||||
if (!gst_qt_mux_register (plugin))
|
||||
return FALSE;
|
||||
if (!gst_qt_moov_recover_register (plugin))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -134,6 +134,7 @@ check_PROGRAMS = \
|
|||
elements/matroskamux \
|
||||
elements/mpegaudioparse \
|
||||
elements/multifile \
|
||||
elements/qtmux \
|
||||
elements/rganalysis \
|
||||
elements/rglimiter \
|
||||
elements/rgvolume \
|
||||
|
@ -149,6 +150,7 @@ check_PROGRAMS = \
|
|||
elements/y4menc \
|
||||
pipelines/simple-launch-lines \
|
||||
pipelines/effectv \
|
||||
pipelines/tagschecking \
|
||||
pipelines/wavenc \
|
||||
$(check_flac) \
|
||||
$(check_gdkpixbuf) \
|
||||
|
|
Loading…
Reference in a new issue