quicktime: move qtmux plugin from -bad to -good

https://bugzilla.gnome.org/show_bug.cgi?id=636699
This commit is contained in:
Tim-Philipp Müller 2011-04-13 11:25:11 +01:00
parent 6630f7def2
commit 4d780297d8
8 changed files with 182 additions and 69 deletions

View file

@ -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 \

View file

@ -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" />

View file

@ -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>

View file

@ -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 &lt;thiagoss@embedded.ufcg.edu.br&gt;</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 &lt;thiagoss@embedded.ufcg.edu.br&gt;</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 &lt;thiagoss@embedded.ufcg.edu.br&gt;</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 &lt;thiagoss@embedded.ufcg.edu.br&gt;</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 &lt;thiago.sousa.santos@collabora.co.uk&gt;</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 &lt;thiagoss@embedded.ufcg.edu.br&gt;</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>

View file

@ -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 \

View file

@ -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);

View file

@ -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;
}

View file

@ -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) \