configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
/* RealVideo wrapper plugin
|
|
|
|
*
|
|
|
|
* Copyright (C) 2005 Lutz Mueller <lutz@topfrose.de>
|
2007-05-06 15:25:05 +00:00
|
|
|
* Copyright (C) 2006 Edward Hervey <bilboed@bilboed.com>
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
*
|
|
|
|
* 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.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
2007-07-24 14:36:54 +00:00
|
|
|
#include "gstreal.h"
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
#include "gstrealvideodec.h"
|
|
|
|
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
GST_DEBUG_CATEGORY_STATIC (realvideode_debug);
|
|
|
|
#define GST_CAT_DEFAULT realvideode_debug
|
|
|
|
|
|
|
|
static GstStaticPadTemplate snk_t =
|
|
|
|
GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
|
|
|
|
GST_STATIC_CAPS ("video/x-pn-realvideo, " "rmversion = (int) [ 2, 4 ]"));
|
|
|
|
static GstStaticPadTemplate src_t =
|
|
|
|
GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
|
|
|
|
GST_STATIC_CAPS ("video/x-raw-yuv, "
|
|
|
|
"format = (fourcc) I420, "
|
|
|
|
"framerate = (fraction) [0/1, MAX], "
|
|
|
|
"width = (int) [ 16, 4096 ], " "height = (int) [ 16, 4096 ] "));
|
|
|
|
|
2007-07-24 14:36:54 +00:00
|
|
|
#define DEFAULT_RV20_NAMES "drv2.so:drv2.so.6.0"
|
|
|
|
#define DEFAULT_RV30_NAMES "drvc.so:drv3.so.6.0"
|
|
|
|
#define DEFAULT_RV40_NAMES "drvc.so:drv4.so.6.0"
|
2007-09-19 13:50:44 +00:00
|
|
|
#define DEFAULT_MAX_ERRORS 25
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
PROP_0,
|
2007-07-24 14:36:54 +00:00
|
|
|
PROP_REAL_CODECS_PATH,
|
|
|
|
PROP_RV20_NAMES,
|
|
|
|
PROP_RV30_NAMES,
|
2007-09-19 13:50:44 +00:00
|
|
|
PROP_RV40_NAMES,
|
|
|
|
PROP_MAX_ERRORS
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
GST_BOILERPLATE (GstRealVideoDec, gst_real_video_dec, GstElement,
|
|
|
|
GST_TYPE_ELEMENT);
|
|
|
|
|
2007-01-06 10:58:13 +00:00
|
|
|
static gboolean open_library (GstRealVideoDec * dec,
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
GstRealVideoDecVersion version, GstRVDecLibrary * lib);
|
|
|
|
static void close_library (GstRealVideoDec * dec, GstRVDecLibrary * lib);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
guint32 datalen;
|
|
|
|
gint32 interpolate;
|
|
|
|
gint32 nfragments;
|
|
|
|
gpointer fragments;
|
|
|
|
guint32 flags;
|
|
|
|
guint32 timestamp;
|
|
|
|
} RVInData;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
guint32 frames;
|
|
|
|
guint32 notes;
|
|
|
|
guint32 timestamp;
|
|
|
|
guint32 width;
|
|
|
|
guint32 height;
|
|
|
|
} RVOutData;
|
|
|
|
|
|
|
|
static GstFlowReturn
|
2007-08-07 10:51:59 +00:00
|
|
|
gst_real_video_dec_chain (GstPad * pad, GstBuffer * in)
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
{
|
2007-08-07 10:51:59 +00:00
|
|
|
GstRealVideoDec *dec;
|
|
|
|
guint8 *data;
|
|
|
|
guint size;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
GstFlowReturn ret;
|
2007-08-07 10:51:59 +00:00
|
|
|
RVInData tin;
|
|
|
|
RVOutData tout;
|
|
|
|
GstClockTime timestamp, duration;
|
|
|
|
GstBuffer *out;
|
|
|
|
guint32 result;
|
2007-09-05 21:09:08 +00:00
|
|
|
guint frag_count, frag_size;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
dec = GST_REAL_VIDEO_DEC (GST_PAD_PARENT (pad));
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
if (G_UNLIKELY (dec->lib.Transform == NULL || dec->lib.module == NULL))
|
2007-08-07 10:51:59 +00:00
|
|
|
goto not_negotiated;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
data = GST_BUFFER_DATA (in);
|
|
|
|
size = GST_BUFFER_SIZE (in);
|
|
|
|
timestamp = GST_BUFFER_TIMESTAMP (in);
|
|
|
|
duration = GST_BUFFER_DURATION (in);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-09-05 21:09:08 +00:00
|
|
|
GST_DEBUG_OBJECT (dec, "got buffer of size %u, timestamp %" GST_TIME_FORMAT,
|
|
|
|
size, GST_TIME_ARGS (timestamp));
|
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
/* alloc output buffer */
|
|
|
|
ret = gst_pad_alloc_buffer (dec->src, GST_BUFFER_OFFSET_NONE,
|
|
|
|
dec->width * dec->height * 3 / 2, GST_PAD_CAPS (dec->src), &out);
|
|
|
|
if (ret != GST_FLOW_OK)
|
|
|
|
goto alloc_failed;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
GST_BUFFER_TIMESTAMP (out) = timestamp;
|
|
|
|
GST_BUFFER_DURATION (out) = duration;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
frag_count = *data++;
|
2007-09-05 21:09:08 +00:00
|
|
|
frag_size = (frag_count + 1) * 8;
|
|
|
|
size -= (frag_size + 1);
|
|
|
|
|
|
|
|
GST_DEBUG_OBJECT (dec, "frag_count %u, frag_size %u, data size %u",
|
|
|
|
frag_count, frag_size, size);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-09-19 13:50:44 +00:00
|
|
|
/* Decode.
|
|
|
|
*
|
|
|
|
* The Buffers contain
|
|
|
|
*
|
|
|
|
* 0 1 2 3
|
|
|
|
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* | nfragments | fragment1 ... |
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* | .... |
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* | ... | fragment2 ... |
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* ....
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* | ... | fragment data |
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
*
|
|
|
|
* nfragments: number of fragments
|
|
|
|
* fragmentN: 8 bytes of fragment data (nfragements + 1) of them
|
|
|
|
* fragment data: the data of the fragments.
|
|
|
|
*/
|
2007-08-07 10:51:59 +00:00
|
|
|
tin.datalen = size;
|
|
|
|
tin.interpolate = 0;
|
|
|
|
tin.nfragments = frag_count;
|
|
|
|
tin.fragments = data;
|
|
|
|
tin.flags = 0;
|
|
|
|
tin.timestamp = timestamp;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
/* jump over the frag table to the fragments */
|
2007-09-05 21:09:08 +00:00
|
|
|
data += frag_size;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
result = dec->lib.Transform (
|
2007-08-07 10:51:59 +00:00
|
|
|
(gchar *) data,
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
(gchar *) GST_BUFFER_DATA (out), &tin, &tout, dec->lib.context);
|
2007-08-07 10:51:59 +00:00
|
|
|
if (result)
|
|
|
|
goto could_not_transform;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-09-19 13:50:44 +00:00
|
|
|
/* When we decoded a frame, reset the error counter. We only fail after N
|
|
|
|
* consecutive decoding errors. */
|
|
|
|
dec->error_count = 0;
|
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
gst_buffer_unref (in);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
/* Check for new dimensions */
|
|
|
|
if (tout.frames && ((dec->width != tout.width)
|
|
|
|
|| (dec->height != tout.height))) {
|
|
|
|
GstCaps *caps = gst_caps_copy (GST_PAD_CAPS (dec->src));
|
|
|
|
GstStructure *s = gst_caps_get_structure (caps, 0);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
GST_DEBUG_OBJECT (dec, "New dimensions: %"
|
|
|
|
G_GUINT32_FORMAT " x %" G_GUINT32_FORMAT, tout.width, tout.height);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-09-05 21:09:08 +00:00
|
|
|
gst_structure_set (s, "width", G_TYPE_INT, (gint) tout.width,
|
|
|
|
"height", G_TYPE_INT, (gint) tout.height, NULL);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
gst_pad_set_caps (dec->src, caps);
|
|
|
|
gst_buffer_set_caps (out, caps);
|
|
|
|
gst_caps_unref (caps);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
dec->width = tout.width;
|
|
|
|
dec->height = tout.height;
|
2007-09-05 21:09:08 +00:00
|
|
|
GST_BUFFER_SIZE (out) = dec->width * dec->height * 3 / 2;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
GST_DEBUG_OBJECT (dec,
|
|
|
|
"Pushing out buffer with timestamp %" GST_TIME_FORMAT,
|
|
|
|
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (out)));
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
if ((ret = gst_pad_push (dec->src, out)) != GST_FLOW_OK)
|
|
|
|
goto could_not_push;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-08-07 10:51:59 +00:00
|
|
|
return ret;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
|
|
|
/* Errors */
|
2007-08-07 10:51:59 +00:00
|
|
|
not_negotiated:
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
{
|
2007-08-07 10:51:59 +00:00
|
|
|
GST_WARNING_OBJECT (dec, "decoder not open, probably no input caps set "
|
|
|
|
"yet, caps on input buffer: %" GST_PTR_FORMAT, GST_BUFFER_CAPS (in));
|
|
|
|
gst_buffer_unref (in);
|
|
|
|
return GST_FLOW_NOT_NEGOTIATED;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
2007-08-07 10:51:59 +00:00
|
|
|
alloc_failed:
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
{
|
2007-08-07 10:51:59 +00:00
|
|
|
GST_DEBUG_OBJECT (dec, "buffer alloc failed: %s", gst_flow_get_name (ret));
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
gst_buffer_unref (in);
|
2007-08-07 10:51:59 +00:00
|
|
|
return ret;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
|
|
|
could_not_transform:
|
|
|
|
{
|
|
|
|
gst_buffer_unref (out);
|
2007-08-07 10:51:59 +00:00
|
|
|
gst_buffer_unref (in);
|
2007-09-19 13:50:44 +00:00
|
|
|
|
|
|
|
dec->error_count++;
|
|
|
|
|
|
|
|
if (dec->max_errors && dec->error_count >= dec->max_errors) {
|
|
|
|
GST_ELEMENT_ERROR (dec, STREAM, DECODE,
|
|
|
|
("Could not decode buffer: %" G_GUINT32_FORMAT, result), (NULL));
|
|
|
|
return GST_FLOW_ERROR;
|
|
|
|
} else {
|
|
|
|
GST_ELEMENT_WARNING (dec, STREAM, DECODE,
|
|
|
|
("Could not decode buffer: %" G_GUINT32_FORMAT, result), (NULL));
|
|
|
|
return GST_FLOW_OK;
|
|
|
|
}
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
|
|
|
could_not_push:
|
|
|
|
{
|
|
|
|
GST_DEBUG_OBJECT (dec, "Could not push buffer: %s",
|
|
|
|
gst_flow_get_name (ret));
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
static GstCaps *
|
|
|
|
gst_real_video_dec_getcaps (GstPad * pad)
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
{
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
GstRealVideoDec *dec = GST_REAL_VIDEO_DEC (GST_PAD_PARENT (pad));
|
|
|
|
GstCaps *res;
|
|
|
|
|
|
|
|
if (dec->checked_modules) {
|
|
|
|
GValue versions = { 0 };
|
|
|
|
GValue version = { 0 };
|
|
|
|
|
|
|
|
GST_LOG_OBJECT (dec, "constructing caps");
|
|
|
|
res = gst_caps_new_empty ();
|
|
|
|
|
|
|
|
g_value_init (&versions, GST_TYPE_LIST);
|
|
|
|
g_value_init (&version, G_TYPE_INT);
|
|
|
|
|
|
|
|
if (dec->valid_rv20) {
|
|
|
|
g_value_set_int (&version, GST_REAL_VIDEO_DEC_VERSION_2);
|
|
|
|
gst_value_list_append_value (&versions, &version);
|
|
|
|
}
|
|
|
|
if (dec->valid_rv30) {
|
|
|
|
g_value_set_int (&version, GST_REAL_VIDEO_DEC_VERSION_3);
|
|
|
|
gst_value_list_append_value (&versions, &version);
|
|
|
|
}
|
|
|
|
if (dec->valid_rv40) {
|
|
|
|
g_value_set_int (&version, GST_REAL_VIDEO_DEC_VERSION_4);
|
|
|
|
gst_value_list_append_value (&versions, &version);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (gst_value_list_get_size (&versions) > 0) {
|
|
|
|
res = gst_caps_new_simple ("video/x-pn-realvideo", NULL);
|
|
|
|
gst_structure_set_value (gst_caps_get_structure (res, 0),
|
|
|
|
"rmversion", &versions);
|
|
|
|
} else {
|
|
|
|
res = gst_caps_new_empty ();
|
|
|
|
}
|
|
|
|
g_value_unset (&versions);
|
|
|
|
g_value_unset (&version);
|
|
|
|
} else {
|
|
|
|
GST_LOG_OBJECT (dec, "returning padtemplate caps");
|
|
|
|
res = gst_caps_copy (gst_pad_get_pad_template_caps (pad));
|
|
|
|
}
|
|
|
|
GST_LOG_OBJECT (dec, "returning caps %" GST_PTR_FORMAT, res);
|
|
|
|
|
|
|
|
return res;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
|
|
|
gst_real_video_dec_setcaps (GstPad * pad, GstCaps * caps)
|
|
|
|
{
|
|
|
|
GstRealVideoDec *dec = GST_REAL_VIDEO_DEC (GST_PAD_PARENT (pad));
|
|
|
|
GstStructure *s = gst_caps_get_structure (caps, 0);
|
2007-01-06 10:58:13 +00:00
|
|
|
gint version, res, width, height, format, subformat;
|
|
|
|
gint framerate_num, framerate_denom;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
gchar data[36];
|
|
|
|
gboolean bres;
|
|
|
|
const GValue *v;
|
|
|
|
|
|
|
|
if (!gst_structure_get_int (s, "rmversion", &version) ||
|
2007-01-06 10:58:13 +00:00
|
|
|
!gst_structure_get_int (s, "width", (gint *) & width) ||
|
|
|
|
!gst_structure_get_int (s, "height", (gint *) & height) ||
|
|
|
|
!gst_structure_get_int (s, "format", &format) ||
|
|
|
|
!gst_structure_get_int (s, "subformat", &subformat) ||
|
|
|
|
!gst_structure_get_fraction (s, "framerate", &framerate_num,
|
|
|
|
&framerate_denom))
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
goto missing_keys;
|
|
|
|
|
|
|
|
GST_LOG_OBJECT (dec, "Setting version to %d", version);
|
|
|
|
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
close_library (dec, &dec->lib);
|
|
|
|
|
|
|
|
if (!open_library (dec, version, &dec->lib))
|
|
|
|
goto open_failed;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
|
|
|
/* Initialize REAL driver. */
|
|
|
|
GST_WRITE_UINT16_LE (data + 0, 11);
|
2007-01-06 10:58:13 +00:00
|
|
|
GST_WRITE_UINT16_LE (data + 2, width);
|
|
|
|
GST_WRITE_UINT16_LE (data + 4, height);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
GST_WRITE_UINT16_LE (data + 6, 0);
|
|
|
|
GST_WRITE_UINT32_LE (data + 8, 0);
|
2007-01-06 10:58:13 +00:00
|
|
|
GST_WRITE_UINT32_LE (data + 12, subformat);
|
2007-09-05 21:09:08 +00:00
|
|
|
GST_WRITE_UINT32_LE (data + 16, 1);
|
2007-01-06 10:58:13 +00:00
|
|
|
GST_WRITE_UINT32_LE (data + 20, format);
|
2007-09-05 21:09:08 +00:00
|
|
|
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
if ((res = dec->lib.Init (&data, &dec->lib.context)))
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
goto could_not_initialize;
|
|
|
|
|
|
|
|
if ((v = gst_structure_get_value (s, "codec_data"))) {
|
|
|
|
GstBuffer *buf;
|
|
|
|
guint32 *msgdata;
|
|
|
|
guint i;
|
2007-09-05 21:09:08 +00:00
|
|
|
guint8 *bufdata;
|
|
|
|
guint bufsize;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
guint32 type;
|
|
|
|
guint32 msg;
|
|
|
|
gpointer data;
|
|
|
|
guint32 extra[6];
|
|
|
|
} msg;
|
|
|
|
|
|
|
|
buf = g_value_peek_pointer (v);
|
|
|
|
|
2007-09-05 21:09:08 +00:00
|
|
|
bufdata = GST_BUFFER_DATA (buf);
|
|
|
|
bufsize = GST_BUFFER_SIZE (buf);
|
|
|
|
|
|
|
|
/* skip format and subformat */
|
|
|
|
bufdata += 8;
|
|
|
|
bufsize -= 8;
|
|
|
|
|
|
|
|
GST_LOG_OBJECT (dec, "Creating custom message of length %d", bufsize);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-09-05 21:09:08 +00:00
|
|
|
msgdata = g_new0 (guint32, bufsize + 2);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
if (!msgdata)
|
|
|
|
goto could_not_allocate;
|
|
|
|
|
|
|
|
msg.type = 0x24;
|
2007-01-06 10:58:13 +00:00
|
|
|
msg.msg = 1 + ((subformat >> 16) & 7);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
msg.data = msgdata;
|
|
|
|
for (i = 0; i < 6; i++)
|
|
|
|
msg.extra[i] = 0;
|
2007-01-06 10:58:13 +00:00
|
|
|
msgdata[0] = width;
|
|
|
|
msgdata[1] = height;
|
2007-09-05 21:09:08 +00:00
|
|
|
for (i = 0; i < bufsize; i++)
|
|
|
|
msgdata[i + 2] = 4 * (guint32) bufdata[i];
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
res = dec->lib.Message (&msg, dec->lib.context);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
|
|
|
g_free (msgdata);
|
|
|
|
if (res)
|
|
|
|
goto could_not_send_message;
|
|
|
|
}
|
|
|
|
|
|
|
|
caps = gst_caps_new_simple ("video/x-raw-yuv",
|
|
|
|
"format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I', '4', '2', '0'),
|
2007-01-06 10:58:13 +00:00
|
|
|
"framerate", GST_TYPE_FRACTION, framerate_num, framerate_denom,
|
|
|
|
"width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
|
2008-10-29 16:53:54 +00:00
|
|
|
|
|
|
|
/* set PAR if one was specified in the sink caps */
|
|
|
|
if ((v = gst_structure_get_value (s, "pixel-aspect-ratio"))) {
|
|
|
|
gst_structure_set_value (gst_caps_get_structure (caps, 0),
|
|
|
|
"pixel-aspect-ratio", v);
|
|
|
|
}
|
|
|
|
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
bres = gst_pad_set_caps (GST_PAD (dec->src), caps);
|
|
|
|
gst_caps_unref (caps);
|
|
|
|
if (!bres)
|
|
|
|
goto could_not_set_caps;
|
|
|
|
|
2007-01-06 10:58:13 +00:00
|
|
|
dec->version = version;
|
|
|
|
dec->width = width;
|
|
|
|
dec->height = height;
|
|
|
|
dec->format = format;
|
|
|
|
dec->subformat = subformat;
|
|
|
|
dec->framerate_num = framerate_num;
|
|
|
|
dec->framerate_denom = framerate_denom;
|
|
|
|
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
missing_keys:
|
|
|
|
{
|
2007-09-05 21:09:08 +00:00
|
|
|
GST_ERROR_OBJECT (dec, "Could not find all necessary keys in structure.");
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
open_failed:
|
|
|
|
{
|
|
|
|
GST_ERROR_OBJECT (dec, "failed to open library");
|
|
|
|
return FALSE;
|
|
|
|
}
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
could_not_initialize:
|
|
|
|
{
|
2007-09-05 21:09:08 +00:00
|
|
|
GST_ERROR_OBJECT (dec, "Initialization of REAL driver failed (%i).", res);
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
close_library (dec, &dec->lib);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
could_not_allocate:
|
|
|
|
{
|
2007-09-05 21:09:08 +00:00
|
|
|
GST_ERROR_OBJECT (dec, "Could not allocate memory.");
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
close_library (dec, &dec->lib);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
could_not_send_message:
|
|
|
|
{
|
2007-09-05 21:09:08 +00:00
|
|
|
GST_ERROR_OBJECT (dec, "Failed to send custom message needed for "
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
"initialization (%i).", res);
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
close_library (dec, &dec->lib);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
could_not_set_caps:
|
|
|
|
{
|
2007-09-05 21:09:08 +00:00
|
|
|
GST_ERROR_OBJECT (dec, "Could not convince peer to accept dimensions "
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
"%i x %i.", dec->width, dec->height);
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
close_library (dec, &dec->lib);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Attempts to open the correct library for the configured version */
|
|
|
|
|
|
|
|
static gboolean
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
open_library (GstRealVideoDec * dec, GstRealVideoDecVersion version,
|
|
|
|
GstRVDecLibrary * lib)
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
{
|
2007-05-06 15:25:05 +00:00
|
|
|
gpointer rv_custom_msg, rv_free, rv_init, rv_transform;
|
2007-07-24 14:36:54 +00:00
|
|
|
GModule *module = NULL;
|
2010-03-22 12:16:33 +00:00
|
|
|
const gchar *path, *names;
|
2007-07-24 14:36:54 +00:00
|
|
|
gchar **split_names, **split_path;
|
|
|
|
int i, j;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
|
|
|
GST_DEBUG_OBJECT (dec,
|
2007-01-06 10:58:13 +00:00
|
|
|
"Attempting to open shared library for real video version %d", version);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-07-24 14:36:54 +00:00
|
|
|
path = dec->real_codecs_path ? dec->real_codecs_path :
|
|
|
|
DEFAULT_REAL_CODECS_PATH;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-01-06 10:58:13 +00:00
|
|
|
switch (version) {
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
case GST_REAL_VIDEO_DEC_VERSION_2:
|
2007-07-24 14:36:54 +00:00
|
|
|
names = dec->rv20_names ? dec->rv20_names : DEFAULT_RV20_NAMES;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
break;
|
|
|
|
case GST_REAL_VIDEO_DEC_VERSION_3:
|
2007-07-24 14:36:54 +00:00
|
|
|
names = dec->rv30_names ? dec->rv30_names : DEFAULT_RV30_NAMES;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
break;
|
|
|
|
case GST_REAL_VIDEO_DEC_VERSION_4:
|
2007-07-24 14:36:54 +00:00
|
|
|
names = dec->rv40_names ? dec->rv40_names : DEFAULT_RV40_NAMES;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
goto unknown_version;
|
|
|
|
}
|
|
|
|
|
2007-07-24 14:36:54 +00:00
|
|
|
split_path = g_strsplit (path, ":", 0);
|
|
|
|
split_names = g_strsplit (names, ":", 0);
|
2007-05-06 15:25:05 +00:00
|
|
|
|
2007-07-24 14:36:54 +00:00
|
|
|
for (i = 0; split_path[i]; i++) {
|
|
|
|
for (j = 0; split_names[j]; j++) {
|
|
|
|
gchar *codec = g_strconcat (split_path[i], "/", split_names[j], NULL);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2008-05-13 16:16:35 +00:00
|
|
|
GST_DEBUG_OBJECT (dec, "trying %s", codec);
|
2009-07-19 14:37:50 +00:00
|
|
|
/* This is racy, but it doesn't matter here; would be nice if GModule
|
|
|
|
* gave us a GError instead of an error string, but it doesn't, so.. */
|
|
|
|
if (g_file_test (codec, G_FILE_TEST_EXISTS)) {
|
|
|
|
module = g_module_open (codec, G_MODULE_BIND_LAZY);
|
|
|
|
if (module == NULL) {
|
|
|
|
GST_ERROR_OBJECT (dec, "Could not open codec library '%s': %s",
|
|
|
|
codec, g_module_error ());
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
GST_LOG_OBJECT (dec, "%s does not exist", codec);
|
|
|
|
}
|
2007-07-24 14:36:54 +00:00
|
|
|
g_free (codec);
|
|
|
|
if (module)
|
|
|
|
goto codec_search_done;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
codec_search_done:
|
|
|
|
g_strfreev (split_path);
|
|
|
|
g_strfreev (split_names);
|
|
|
|
|
|
|
|
if (module == NULL)
|
2009-07-19 14:37:50 +00:00
|
|
|
return FALSE;
|
2007-05-06 15:25:05 +00:00
|
|
|
|
2008-05-13 16:16:35 +00:00
|
|
|
GST_DEBUG_OBJECT (dec, "module opened, finding symbols");
|
|
|
|
|
2007-05-06 15:25:05 +00:00
|
|
|
/* First try opening legacy symbols, if that fails try loading new symbols */
|
|
|
|
if (g_module_symbol (module, "RV20toYUV420Init", &rv_init) &&
|
|
|
|
g_module_symbol (module, "RV20toYUV420Free", &rv_free) &&
|
|
|
|
g_module_symbol (module, "RV20toYUV420Transform", &rv_transform) &&
|
|
|
|
g_module_symbol (module, "RV20toYUV420CustomMessage", &rv_custom_msg)) {
|
|
|
|
GST_LOG_OBJECT (dec, "Loaded legacy symbols");
|
|
|
|
} else if (g_module_symbol (module, "RV40toYUV420Init", &rv_init) &&
|
|
|
|
g_module_symbol (module, "RV40toYUV420Free", &rv_free) &&
|
|
|
|
g_module_symbol (module, "RV40toYUV420Transform", &rv_transform) &&
|
|
|
|
g_module_symbol (module, "RV40toYUV420CustomMessage", &rv_custom_msg)) {
|
|
|
|
GST_LOG_OBJECT (dec, "Loaded new symbols");
|
|
|
|
} else {
|
|
|
|
goto could_not_load;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
|
|
|
|
2008-07-16 14:15:39 +00:00
|
|
|
lib->Init = (guint32 (*)(gpointer, gpointer)) rv_init;
|
|
|
|
lib->Free = (guint32 (*)(gpointer)) rv_free;
|
|
|
|
lib->Transform = (guint32 (*)(gchar *, gchar *, gpointer, gpointer, gpointer))
|
|
|
|
rv_transform;
|
|
|
|
lib->Message = (guint32 (*)(gpointer, gpointer)) rv_custom_msg;
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
lib->module = module;
|
2007-05-06 15:25:05 +00:00
|
|
|
|
2007-09-19 13:50:44 +00:00
|
|
|
dec->error_count = 0;
|
|
|
|
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
unknown_version:
|
|
|
|
{
|
2007-01-06 10:58:13 +00:00
|
|
|
GST_ERROR_OBJECT (dec, "Cannot handle version %i.", version);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
could_not_load:
|
|
|
|
{
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
close_library (dec, lib);
|
2007-05-06 15:25:05 +00:00
|
|
|
GST_ERROR_OBJECT (dec, "Could not load all symbols: %s", g_module_error ());
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
close_library (GstRealVideoDec * dec, GstRVDecLibrary * lib)
|
|
|
|
{
|
|
|
|
if (lib->context) {
|
|
|
|
GST_LOG_OBJECT (dec, "closing library");
|
|
|
|
if (lib->Free)
|
|
|
|
lib->Free (lib->context);
|
|
|
|
}
|
|
|
|
if (lib->module) {
|
|
|
|
GST_LOG_OBJECT (dec, "closing library module");
|
|
|
|
g_module_close (lib->module);
|
|
|
|
lib->module = NULL;
|
|
|
|
}
|
|
|
|
memset (lib, 0, sizeof (*lib));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_real_video_dec_probe_modules (GstRealVideoDec * dec)
|
|
|
|
{
|
|
|
|
GstRVDecLibrary dummy = { NULL };
|
|
|
|
|
|
|
|
if ((dec->valid_rv20 =
|
|
|
|
open_library (dec, GST_REAL_VIDEO_DEC_VERSION_2, &dummy)))
|
|
|
|
close_library (dec, &dummy);
|
|
|
|
if ((dec->valid_rv30 =
|
|
|
|
open_library (dec, GST_REAL_VIDEO_DEC_VERSION_3, &dummy)))
|
|
|
|
close_library (dec, &dummy);
|
|
|
|
if ((dec->valid_rv40 =
|
|
|
|
open_library (dec, GST_REAL_VIDEO_DEC_VERSION_4, &dummy)))
|
|
|
|
close_library (dec, &dummy);
|
|
|
|
}
|
|
|
|
|
|
|
|
static GstStateChangeReturn
|
|
|
|
gst_real_video_dec_change_state (GstElement * element,
|
|
|
|
GstStateChange transition)
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
{
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
GstStateChangeReturn ret;
|
|
|
|
GstRealVideoDec *dec = GST_REAL_VIDEO_DEC (element);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
switch (transition) {
|
|
|
|
case GST_STATE_CHANGE_NULL_TO_READY:
|
|
|
|
gst_real_video_dec_probe_modules (dec);
|
|
|
|
dec->checked_modules = TRUE;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
|
|
|
|
|
|
|
|
switch (transition) {
|
|
|
|
case GST_STATE_CHANGE_PAUSED_TO_READY:
|
|
|
|
close_library (dec, &dec->lib);
|
|
|
|
break;
|
|
|
|
case GST_STATE_CHANGE_READY_TO_NULL:
|
|
|
|
dec->checked_modules = FALSE;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
2007-05-06 15:25:05 +00:00
|
|
|
}
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
return ret;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_real_video_dec_init (GstRealVideoDec * dec, GstRealVideoDecClass * klass)
|
|
|
|
{
|
2007-02-26 10:32:30 +00:00
|
|
|
dec->snk = gst_pad_new_from_static_template (&snk_t, "sink");
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
gst_pad_set_getcaps_function (dec->snk,
|
|
|
|
GST_DEBUG_FUNCPTR (gst_real_video_dec_getcaps));
|
2007-02-26 10:32:30 +00:00
|
|
|
gst_pad_set_setcaps_function (dec->snk,
|
|
|
|
GST_DEBUG_FUNCPTR (gst_real_video_dec_setcaps));
|
|
|
|
gst_pad_set_chain_function (dec->snk,
|
|
|
|
GST_DEBUG_FUNCPTR (gst_real_video_dec_chain));
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
gst_element_add_pad (GST_ELEMENT (dec), dec->snk);
|
|
|
|
|
2007-02-26 10:32:30 +00:00
|
|
|
dec->src = gst_pad_new_from_static_template (&src_t, "src");
|
|
|
|
gst_pad_use_fixed_caps (dec->src);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
gst_element_add_pad (GST_ELEMENT (dec), dec->src);
|
2007-09-19 13:50:44 +00:00
|
|
|
|
|
|
|
dec->max_errors = DEFAULT_MAX_ERRORS;
|
|
|
|
dec->error_count = 0;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_real_video_dec_base_init (gpointer g_class)
|
|
|
|
{
|
|
|
|
GstElementClass *ec = GST_ELEMENT_CLASS (g_class);
|
|
|
|
|
|
|
|
gst_element_class_add_pad_template (ec, gst_static_pad_template_get (&snk_t));
|
|
|
|
gst_element_class_add_pad_template (ec, gst_static_pad_template_get (&src_t));
|
2010-03-18 16:30:26 +00:00
|
|
|
gst_element_class_set_details_simple (ec, "RealVideo decoder",
|
|
|
|
"Codec/Decoder/Video", "Decoder for RealVideo streams",
|
|
|
|
"Lutz Mueller <lutz@topfrose.de>");
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_real_video_dec_finalize (GObject * object)
|
|
|
|
{
|
|
|
|
GstRealVideoDec *dec = GST_REAL_VIDEO_DEC (object);
|
|
|
|
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
close_library (dec, &dec->lib);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
2007-07-24 14:36:54 +00:00
|
|
|
if (dec->real_codecs_path) {
|
|
|
|
g_free (dec->real_codecs_path);
|
|
|
|
dec->real_codecs_path = NULL;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
2007-07-24 14:36:54 +00:00
|
|
|
if (dec->rv20_names) {
|
|
|
|
g_free (dec->rv20_names);
|
|
|
|
dec->rv20_names = NULL;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
2007-07-24 14:36:54 +00:00
|
|
|
if (dec->rv30_names) {
|
|
|
|
g_free (dec->rv30_names);
|
|
|
|
dec->rv30_names = NULL;
|
|
|
|
}
|
|
|
|
if (dec->rv40_names) {
|
|
|
|
g_free (dec->rv40_names);
|
|
|
|
dec->rv40_names = NULL;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
G_OBJECT_CLASS (parent_class)->finalize (object);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_real_video_dec_set_property (GObject * object, guint prop_id,
|
|
|
|
const GValue * value, GParamSpec * pspec)
|
|
|
|
{
|
|
|
|
GstRealVideoDec *dec = GST_REAL_VIDEO_DEC (object);
|
|
|
|
|
|
|
|
/* Changing the location of the .so supposes it's not being done
|
|
|
|
* in a state greater than READY !
|
|
|
|
*/
|
|
|
|
|
|
|
|
switch (prop_id) {
|
2007-07-24 14:36:54 +00:00
|
|
|
case PROP_REAL_CODECS_PATH:
|
|
|
|
if (dec->real_codecs_path)
|
|
|
|
g_free (dec->real_codecs_path);
|
|
|
|
dec->real_codecs_path = g_value_dup_string (value);
|
|
|
|
break;
|
|
|
|
case PROP_RV20_NAMES:
|
|
|
|
if (dec->rv20_names)
|
|
|
|
g_free (dec->rv20_names);
|
|
|
|
dec->rv20_names = g_value_dup_string (value);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
break;
|
2007-07-24 14:36:54 +00:00
|
|
|
case PROP_RV30_NAMES:
|
|
|
|
if (dec->rv30_names)
|
|
|
|
g_free (dec->rv30_names);
|
|
|
|
dec->rv30_names = g_value_dup_string (value);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
break;
|
2007-07-24 14:36:54 +00:00
|
|
|
case PROP_RV40_NAMES:
|
|
|
|
if (dec->rv40_names)
|
|
|
|
g_free (dec->rv40_names);
|
|
|
|
dec->rv40_names = g_value_dup_string (value);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
break;
|
2007-09-19 13:50:44 +00:00
|
|
|
case PROP_MAX_ERRORS:
|
|
|
|
dec->max_errors = g_value_get_int (value);
|
|
|
|
break;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
default:
|
|
|
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_real_video_dec_get_property (GObject * object, guint prop_id,
|
|
|
|
GValue * value, GParamSpec * pspec)
|
|
|
|
{
|
|
|
|
GstRealVideoDec *dec = GST_REAL_VIDEO_DEC (object);
|
|
|
|
|
|
|
|
switch (prop_id) {
|
2007-07-24 14:36:54 +00:00
|
|
|
case PROP_REAL_CODECS_PATH:
|
|
|
|
g_value_set_string (value, dec->real_codecs_path ? dec->real_codecs_path
|
|
|
|
: DEFAULT_REAL_CODECS_PATH);
|
|
|
|
break;
|
|
|
|
case PROP_RV20_NAMES:
|
|
|
|
g_value_set_string (value, dec->rv20_names ? dec->rv20_names :
|
|
|
|
DEFAULT_RV20_NAMES);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
break;
|
2007-07-24 14:36:54 +00:00
|
|
|
case PROP_RV30_NAMES:
|
|
|
|
g_value_set_string (value, dec->rv30_names ? dec->rv30_names :
|
|
|
|
DEFAULT_RV30_NAMES);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
break;
|
2007-07-24 14:36:54 +00:00
|
|
|
case PROP_RV40_NAMES:
|
|
|
|
g_value_set_string (value, dec->rv40_names ? dec->rv40_names :
|
|
|
|
DEFAULT_RV40_NAMES);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
break;
|
2007-09-19 13:50:44 +00:00
|
|
|
case PROP_MAX_ERRORS:
|
|
|
|
g_value_set_int (value, dec->max_errors);
|
|
|
|
break;
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
default:
|
|
|
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_real_video_dec_class_init (GstRealVideoDecClass * klass)
|
|
|
|
{
|
|
|
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
|
|
|
object_class->set_property = gst_real_video_dec_set_property;
|
|
|
|
object_class->get_property = gst_real_video_dec_get_property;
|
|
|
|
object_class->finalize = gst_real_video_dec_finalize;
|
|
|
|
|
gst/real/gstrealaudiodec.c: Add raversions we can support on the caps.
Original commit message from CVS:
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_chain),
(close_library), (open_library),
(gst_real_audio_dec_probe_modules), (gst_real_audio_dec_getcaps),
(gst_real_audio_dec_setcaps), (gst_real_audio_dec_init),
(gst_real_audio_dec_change_state), (gst_real_audio_dec_finalize):
Add raversions we can support on the caps.
Refactor the loading of the real codecs like realvideo so that we can
implement probing.
Probe all supported formats by trying to load the .so files, only report
the versions on the caps that we can actually load.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),
(gst_real_video_dec_getcaps), (gst_real_video_dec_setcaps),
(open_library), (close_library),
(gst_real_video_dec_probe_modules),
(gst_real_video_dec_change_state), (gst_real_video_dec_init),
(gst_real_video_dec_finalize), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Change the loading of the library like the audio decoder.
Probe the supported formats by trying to load the .so files and only
report the versions on the caps that we can actually load.
2008-06-13 18:03:16 +00:00
|
|
|
element_class->change_state = gst_real_video_dec_change_state;
|
|
|
|
|
2007-07-24 14:36:54 +00:00
|
|
|
g_object_class_install_property (object_class, PROP_REAL_CODECS_PATH,
|
2007-09-19 13:50:44 +00:00
|
|
|
g_param_spec_string ("real-codecs-path",
|
2007-07-24 14:36:54 +00:00
|
|
|
"Path where to search for RealPlayer codecs",
|
|
|
|
"Path where to search for RealPlayer codecs",
|
|
|
|
DEFAULT_REAL_CODECS_PATH, G_PARAM_READWRITE));
|
|
|
|
g_object_class_install_property (object_class, PROP_RV20_NAMES,
|
2007-09-19 13:50:44 +00:00
|
|
|
g_param_spec_string ("rv20-names", "Names of rv20 driver",
|
2007-07-24 14:36:54 +00:00
|
|
|
"Names of rv20 driver", DEFAULT_RV20_NAMES, G_PARAM_READWRITE));
|
|
|
|
g_object_class_install_property (object_class, PROP_RV30_NAMES,
|
2007-09-19 13:50:44 +00:00
|
|
|
g_param_spec_string ("rv30-names", "Names of rv30 driver",
|
2007-07-24 14:36:54 +00:00
|
|
|
"Names of rv30 driver", DEFAULT_RV30_NAMES, G_PARAM_READWRITE));
|
|
|
|
g_object_class_install_property (object_class, PROP_RV40_NAMES,
|
2007-09-19 13:50:44 +00:00
|
|
|
g_param_spec_string ("rv40-names", "Names of rv40 driver",
|
2007-07-24 14:36:54 +00:00
|
|
|
"Names of rv40 driver", DEFAULT_RV40_NAMES, G_PARAM_READWRITE));
|
2007-09-19 13:50:44 +00:00
|
|
|
g_object_class_install_property (object_class, PROP_MAX_ERRORS,
|
|
|
|
g_param_spec_int ("max-errors", "Max errors",
|
|
|
|
"Maximum number of consecutive errors (0 = unlimited)",
|
|
|
|
0, G_MAXINT, DEFAULT_MAX_ERRORS, G_PARAM_READWRITE));
|
configure.ac: Real video .so are now also available for x86_64, so we can build the
Original commit message from CVS:
* configure.ac:
Real video .so are now also available for x86_64, so we can build the
Real plugin on i386 AND x86_64.
* gst/real/Makefile.am:
* gst/real/gstreal.c: (plugin_init):
New plugin file for real .so wrapper plugins.
* gst/real/gstrealvideodec.c: (gst_real_video_dec_alloc_buffer),
(gst_real_video_dec_decode), (gst_real_video_dec_chain),
(gst_real_video_dec_activate_push), (gst_real_video_dec_setcaps),
(open_library), (close_library), (gst_real_video_dec_init),
(gst_real_video_dec_base_init), (gst_real_video_dec_finalize),
(gst_real_video_dec_set_property),
(gst_real_video_dec_get_property), (gst_real_video_dec_class_init):
* gst/real/gstrealvideodec.h:
Moved RealVideo element to separate file
Cleaned up code some more.
Make it work on x86_64.
Try several possible locations for .so
Separate opening/closing libraries in separate functions.
2007-01-05 18:15:52 +00:00
|
|
|
|
|
|
|
GST_DEBUG_CATEGORY_INIT (realvideode_debug, "realvideodec", 0,
|
|
|
|
"RealVideo decoder");
|
|
|
|
}
|