Remove typefinding as separate plugin, this is part of the demuxers now

Original commit message from CVS:
Remove typefinding as separate plugin, this is part of the demuxers now
This commit is contained in:
Ronald S. Bultje 2003-06-08 13:30:59 +00:00
parent aede10be3e
commit 9b1645814e
3 changed files with 1 additions and 139 deletions

View file

@ -8,8 +8,7 @@ libgstffmpeg_la_SOURCES = gstffmpeg.c \
gstffmpegdemux.c \
gstffmpegenc.c \
gstffmpegmux.c \
gstffmpegprotocol.c \
gstffmpegtypes.c
gstffmpegprotocol.c
libgstffmpeg_la_CFLAGS = $(GST_CFLAGS) \
-I $(top_builddir)/gst-libs/ext/ffmpeg/ffmpeg/libavcodec \

View file

@ -52,7 +52,6 @@ plugin_init (GModule *module, GstPlugin *plugin)
gst_ffmpegenc_register (plugin);
gst_ffmpegdec_register (plugin);
gst_ffmpegdemux_register (plugin);
gst_ffmpegtypes_register (plugin);
register_protocol (&gstreamer_protocol);

View file

@ -1,136 +0,0 @@
/* GStreamer
* Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
*
* 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.
*/
#include <assert.h>
#include <string.h>
#include "config.h"
#ifdef HAVE_FFMPEG_UNINSTALLED
#include <avformat.h>
#else
#include <ffmpeg/avformat.h>
#endif
#include <gst/gst.h>
static GHashTable *global_types = NULL;
extern GstCaps* gst_ffmpegcodec_codec_context_to_caps (AVCodecContext *ctx, int id);
static GstCaps*
gst_ffmpegtypes_typefind (GstBuffer *buffer, gpointer priv)
{
AVInputFormat *in_plugin;
AVInputFormat *highest = NULL;
gint max = 0;
gint res = 0;
in_plugin = first_iformat;
while (in_plugin) {
if (in_plugin->read_probe) {
AVProbeData probe_data;
probe_data.filename = "";
probe_data.buf = GST_BUFFER_DATA (buffer);
probe_data.buf_size = GST_BUFFER_SIZE (buffer);
res = in_plugin->read_probe (&probe_data);
if (res > max) {
max = res;
highest = in_plugin;
}
}
in_plugin = in_plugin->next;
}
if (highest) {
GstCaps *caps;
caps = g_hash_table_lookup (global_types, highest->name);
/* make sure we still hold a refcount to this caps */
gst_caps_ref (caps);
return caps;
}
return NULL;
}
#define ADD_TYPE(key,caps) g_hash_table_insert (global_types, (key), (caps))
static void
register_standard_formats (void)
{
global_types = g_hash_table_new (g_str_hash, g_str_equal);
ADD_TYPE ("avi", GST_CAPS_NEW ("ffmpeg_type_avi", "video/avi", NULL));
ADD_TYPE ("mpeg", GST_CAPS_NEW ("ffmpeg_type_mpeg", "video/mpeg",
"systemstream", GST_PROPS_BOOLEAN (TRUE)));
ADD_TYPE ("mpegts", GST_CAPS_NEW ("ffmpeg_type_mpegts", "video/x-mpegts",
"systemstream", GST_PROPS_BOOLEAN (TRUE)));
ADD_TYPE ("rm", GST_CAPS_NEW ("ffmpeg_type_rm", "audio/x-pn-realaudio", NULL));
ADD_TYPE ("asf", GST_CAPS_NEW ("ffmpeg_type_asf", "video/x-ms-asf", NULL));
ADD_TYPE ("avi", GST_CAPS_NEW ("ffmpeg_type_avi", "video/avi",
"format", GST_PROPS_STRING ("AVI")));
ADD_TYPE ("mov", GST_CAPS_NEW ("ffmpeg_type_mov", "video/quicktime", NULL));
ADD_TYPE ("swf", GST_CAPS_NEW ("ffmpeg_type_swf", "application/x-shockwave-flash", NULL));
ADD_TYPE ("au", GST_CAPS_NEW ("ffmpeg_type_au", "audio/basic", NULL));
ADD_TYPE ("mov", GST_CAPS_NEW ("ffmpeg_type_mov", "video/quicktime", NULL));
}
gboolean
gst_ffmpegtypes_register (GstPlugin *plugin)
{
AVInputFormat *in_plugin;
GstTypeFactory *factory;
GstTypeDefinition *definition;
in_plugin = first_iformat;
while (in_plugin) {
gchar *type_name;
gchar *p;
if (!in_plugin->read_probe)
goto next;
/* construct the type */
type_name = g_strdup_printf("fftype_%s", in_plugin->name);
p = type_name;
while (*p) {
if (*p == '.') *p = '_';
p++;
}
definition = g_new0 (GstTypeDefinition, 1);
definition->name = type_name;
definition->mime = type_name;
definition->exts = g_strdup (in_plugin->extensions);
definition->typefindfunc = gst_ffmpegtypes_typefind;
factory = gst_type_factory_new (definition);
/* The very last thing is to register the elementfactory with the plugin. */
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
next:
in_plugin = in_plugin->next;
}
register_standard_formats ();
return TRUE;
}