From: Tim-Philipp Müller Date: Wed, 13 Apr 2011 10:25:11 +0000 (+0100) Subject: quicktime: move qtmux plugin from -bad to -good X-Git-Tag: RELEASE-0.10.29~82 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4d780297d86c8209d8ee6fed7d6192faf79ced22;p=platform%2Fupstream%2Fgst-plugins-good.git quicktime: move qtmux plugin from -bad to -good https://bugzilla.gnome.org/show_bug.cgi?id=636699 --- diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am index 6b599d3..b511a43 100644 --- a/docs/plugins/Makefile.am +++ b/docs/plugins/Makefile.am @@ -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 \ diff --git a/docs/plugins/gst-plugins-good-plugins-docs.sgml b/docs/plugins/gst-plugins-good-plugins-docs.sgml index 65da14b..fba35fd 100644 --- a/docs/plugins/gst-plugins-good-plugins-docs.sgml +++ b/docs/plugins/gst-plugins-good-plugins-docs.sgml @@ -134,6 +134,7 @@ + diff --git a/docs/plugins/gst-plugins-good-plugins-sections.txt b/docs/plugins/gst-plugins-good-plugins-sections.txt index 107969f..d2b8f75 100644 --- a/docs/plugins/gst-plugins-good-plugins-sections.txt +++ b/docs/plugins/gst-plugins-good-plugins-sections.txt @@ -1688,6 +1688,20 @@ gst_qtdemux_get_type
+element-qtmux +qtmux +GstQTMux + +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 +
+ +
element-rganalysis rganalysis GstRgAnalysis diff --git a/docs/plugins/inspect/plugin-quicktime.xml b/docs/plugins/inspect/plugin-quicktime.xml index c36c6c9..39098cf 100644 --- a/docs/plugins/inspect/plugin-quicktime.xml +++ b/docs/plugins/inspect/plugin-quicktime.xml @@ -10,6 +10,114 @@ Unknown package origin + gppmux + 3GPP Muxer + Codec/Muxer + Multiplex audio and video into a 3GPP file + Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br> + + + audio_%d + sink + request +
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 ]
+
+ + video_%d + sink + request +
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 ]
+
+ + src + source + always +
video/quicktime, variant=(string)3gpp
+
+
+
+ + ismlmux + ISML Muxer + Codec/Muxer + Multiplex audio and video into a ISML file + Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br> + + + audio_%d + sink + request +
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 ]
+
+ + video_%d + sink + request +
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 ]
+
+ + src + source + always +
video/quicktime, variant=(string)iso
+
+
+
+ + mj2mux + MJ2 Muxer + Codec/Muxer + Multiplex audio and video into a MJ2 file + Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br> + + + audio_%d + sink + request +
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
+
+ + video_%d + sink + request +
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 ]
+
+ + src + source + always +
video/mj2
+
+
+
+ + mp4mux + MP4 Muxer + Codec/Muxer + Multiplex audio and video into a MP4 file + Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br> + + + audio_%d + sink + request +
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 ]
+
+ + video_%d + sink + request +
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 ]
+
+ + src + source + always +
video/quicktime, variant=(string)iso
+
+
+
+ qtdemux QuickTime demuxer Codec/Demuxer @@ -43,6 +151,42 @@ + qtmoovrecover + QT Moov Recover + Util + Recovers unfinished qtmux files + Thiago Santos <thiago.sousa.santos@collabora.co.uk> + + + + + qtmux + QuickTime Muxer + Codec/Muxer + Multiplex audio and video into a QuickTime file + Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br> + + + audio_%d + sink + request +
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 ]
+
+ + video_%d + sink + request +
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 ]
+
+ + src + source + always +
video/quicktime, variant=(string)apple
+
+
+
+ rtpxqtdepay RTP packet depayloader Codec/Depayloader/Network diff --git a/gst/quicktime/Makefile.am b/gst/quicktime/Makefile.am index c3e6484..00cc167 100644 --- a/gst/quicktime/Makefile.am +++ b/gst/quicktime/Makefile.am @@ -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 \ diff --git a/gst/quicktime/gstqtmuxplugin.c b/gst/quicktime/gstqtmuxplugin.c deleted file mode 100644 index 440b980..0000000 --- a/gst/quicktime/gstqtmuxplugin.c +++ /dev/null @@ -1,67 +0,0 @@ -/* Quicktime muxer plugin for GStreamer - * Copyright (C) 2008-2010 Thiago Santos - * Copyright (C) 2008 Mark Nauwelaerts - * - * 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); diff --git a/gst/quicktime/quicktime.c b/gst/quicktime/quicktime.c index d567a8c..26df65b 100644 --- a/gst/quicktime/quicktime.c +++ b/gst/quicktime/quicktime.c @@ -26,6 +26,8 @@ #include "qtdemux.h" #include "gstrtpxqtdepay.h" +#include "gstqtmux.h" +#include "gstqtmoovrecover.h" #include @@ -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; } diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index 5e2d304..aed7200 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -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) \