2003-10-25 16:29:13 +00:00
|
|
|
/* GStreamer
|
|
|
|
* Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
|
|
|
|
* This file:
|
|
|
|
* Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Library General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Library General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Library General Public
|
|
|
|
* License along with this library; if not, write to the
|
|
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
|
|
* Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
2003-10-26 11:30:18 +00:00
|
|
|
#include <gst/gst.h>
|
2003-10-25 16:29:13 +00:00
|
|
|
#ifdef HAVE_FFMPEG_UNINSTALLED
|
|
|
|
#include <avcodec.h>
|
|
|
|
#else
|
|
|
|
#include <ffmpeg/avcodec.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "gstffmpegcodecmap.h"
|
|
|
|
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
#define GST_TYPE_FFMPEGCSP \
|
2003-10-25 16:29:13 +00:00
|
|
|
(gst_ffmpegcsp_get_type())
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
#define GST_FFMPEGCSP(obj) \
|
|
|
|
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FFMPEGCSP,GstFFMpegCsp))
|
|
|
|
#define GST_FFMPEGCSP_CLASS(klass) \
|
|
|
|
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FFMPEGCSP,GstFFMpegCsp))
|
|
|
|
#define GST_IS_FFMPEGCSP(obj) \
|
|
|
|
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FFMPEGCSP))
|
|
|
|
#define GST_IS_FFMPEGCSP_CLASS(obj) \
|
|
|
|
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FFMPEGCSP))
|
2003-10-25 16:29:13 +00:00
|
|
|
|
|
|
|
typedef struct _GstFFMpegCsp GstFFMpegCsp;
|
|
|
|
typedef struct _GstFFMpegCspClass GstFFMpegCspClass;
|
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
struct _GstFFMpegCsp
|
|
|
|
{
|
|
|
|
GstElement element;
|
|
|
|
|
|
|
|
GstPad *sinkpad, *srcpad;
|
|
|
|
|
|
|
|
gint width, height;
|
|
|
|
gfloat fps;
|
|
|
|
enum PixelFormat from_pixfmt, to_pixfmt;
|
|
|
|
AVFrame *from_frame, *to_frame;
|
2004-10-02 14:10:27 +00:00
|
|
|
AVPaletteControl *palette;
|
2004-03-29 16:39:18 +00:00
|
|
|
GstCaps *sinkcaps;
|
2003-10-25 16:29:13 +00:00
|
|
|
};
|
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
struct _GstFFMpegCspClass
|
|
|
|
{
|
2003-10-25 16:29:13 +00:00
|
|
|
GstElementClass parent_class;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* elementfactory information */
|
|
|
|
static GstElementDetails ffmpegcsp_details = {
|
|
|
|
"FFMPEG Colorspace converter",
|
2003-11-16 22:01:30 +00:00
|
|
|
"Filter/Converter/Video",
|
2003-10-25 16:29:13 +00:00
|
|
|
"Converts video from one colorspace to another",
|
|
|
|
"Ronald Bultje <rbultje@ronald.bitfreak.net>",
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* Stereo signals and args */
|
2004-03-29 16:39:18 +00:00
|
|
|
enum
|
|
|
|
{
|
2003-10-25 16:29:13 +00:00
|
|
|
/* FILL ME */
|
|
|
|
LAST_SIGNAL
|
|
|
|
};
|
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
enum
|
|
|
|
{
|
2003-10-25 16:29:13 +00:00
|
|
|
ARG_0,
|
|
|
|
};
|
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
static GType gst_ffmpegcsp_get_type (void);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
static void gst_ffmpegcsp_base_init (GstFFMpegCspClass * klass);
|
|
|
|
static void gst_ffmpegcsp_class_init (GstFFMpegCspClass * klass);
|
|
|
|
static void gst_ffmpegcsp_init (GstFFMpegCsp * space);
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
static void gst_ffmpegcsp_set_property (GObject * object,
|
|
|
|
guint prop_id, const GValue * value, GParamSpec * pspec);
|
|
|
|
static void gst_ffmpegcsp_get_property (GObject * object,
|
|
|
|
guint prop_id, GValue * value, GParamSpec * pspec);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
|
|
|
static GstPadLinkReturn
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_pad_link (GstPad * pad, const GstCaps * caps);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
static void gst_ffmpegcsp_chain (GstPad * pad, GstData * data);
|
|
|
|
static GstElementStateReturn gst_ffmpegcsp_change_state (GstElement * element);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
static GstPadTemplate *srctempl, *sinktempl;
|
2003-10-25 16:29:13 +00:00
|
|
|
static GstElementClass *parent_class = NULL;
|
2004-03-29 16:39:18 +00:00
|
|
|
|
2003-10-25 16:29:13 +00:00
|
|
|
/*static guint gst_ffmpegcsp_signals[LAST_SIGNAL] = { 0 }; */
|
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
static GstCaps *
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_caps_remove_format_info (GstCaps * caps)
|
2003-10-25 16:29:13 +00:00
|
|
|
{
|
2003-12-31 08:02:04 +00:00
|
|
|
int i;
|
|
|
|
GstStructure *structure;
|
|
|
|
GstCaps *rgbcaps;
|
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
for (i = 0; i < gst_caps_get_size (caps); i++) {
|
2003-12-31 08:02:04 +00:00
|
|
|
structure = gst_caps_get_structure (caps, i);
|
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_structure_set_name (structure, "video/x-raw-yuv");
|
|
|
|
gst_structure_remove_field (structure, "format");
|
|
|
|
gst_structure_remove_field (structure, "endianness");
|
|
|
|
gst_structure_remove_field (structure, "depth");
|
|
|
|
gst_structure_remove_field (structure, "bpp");
|
|
|
|
gst_structure_remove_field (structure, "red_mask");
|
|
|
|
gst_structure_remove_field (structure, "green_mask");
|
|
|
|
gst_structure_remove_field (structure, "blue_mask");
|
2003-12-31 08:02:04 +00:00
|
|
|
}
|
|
|
|
|
2004-04-22 03:43:58 +00:00
|
|
|
gst_caps_do_simplify (caps);
|
|
|
|
rgbcaps = gst_caps_copy (caps);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
for (i = 0; i < gst_caps_get_size (rgbcaps); i++) {
|
2003-12-31 08:02:04 +00:00
|
|
|
structure = gst_caps_get_structure (rgbcaps, i);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_structure_set_name (structure, "video/x-raw-rgb");
|
2003-12-31 08:02:04 +00:00
|
|
|
}
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
gst_caps_append (caps, rgbcaps);
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
return caps;
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
}
|
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
static GstCaps *
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_getcaps (GstPad * pad)
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
{
|
|
|
|
GstFFMpegCsp *space;
|
2003-12-31 08:02:04 +00:00
|
|
|
GstCaps *othercaps;
|
|
|
|
GstCaps *caps;
|
|
|
|
GstPad *otherpad;
|
2004-03-29 16:39:18 +00:00
|
|
|
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
space = GST_FFMPEGCSP (gst_pad_get_parent (pad));
|
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
otherpad = (pad == space->srcpad) ? space->sinkpad : space->srcpad;
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
|
2004-04-30 12:18:46 +00:00
|
|
|
othercaps = gst_pad_get_allowed_caps (otherpad);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
othercaps = gst_ffmpegcsp_caps_remove_format_info (othercaps);
|
|
|
|
|
|
|
|
caps = gst_caps_intersect (othercaps, gst_pad_get_pad_template_caps (pad));
|
|
|
|
gst_caps_free (othercaps);
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
return caps;
|
2003-10-25 16:29:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static GstPadLinkReturn
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_pad_link (GstPad * pad, const GstCaps * caps)
|
2003-10-25 16:29:13 +00:00
|
|
|
{
|
2003-12-31 08:02:04 +00:00
|
|
|
GstStructure *structure;
|
2003-10-25 16:29:13 +00:00
|
|
|
AVCodecContext *ctx;
|
|
|
|
GstFFMpegCsp *space;
|
2003-12-31 08:02:04 +00:00
|
|
|
const GstCaps *othercaps;
|
|
|
|
GstPad *otherpad;
|
|
|
|
GstPadLinkReturn ret;
|
|
|
|
int height, width;
|
|
|
|
double framerate;
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
|
|
|
|
space = GST_FFMPEGCSP (gst_pad_get_parent (pad));
|
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
otherpad = (pad == space->srcpad) ? space->sinkpad : space->srcpad;
|
|
|
|
|
|
|
|
structure = gst_caps_get_structure (caps, 0);
|
|
|
|
gst_structure_get_int (structure, "width", &width);
|
|
|
|
gst_structure_get_int (structure, "height", &height);
|
|
|
|
gst_structure_get_double (structure, "framerate", &framerate);
|
|
|
|
|
2004-01-02 23:06:49 +00:00
|
|
|
/* FIXME attempt and/or check for passthru */
|
2003-12-31 08:02:04 +00:00
|
|
|
|
|
|
|
/* loop over all possibilities and select the first one we can convert and
|
|
|
|
* is accepted by the peer */
|
2003-10-25 16:29:13 +00:00
|
|
|
ctx = avcodec_alloc_context ();
|
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
ctx->width = width;
|
|
|
|
ctx->height = height;
|
|
|
|
ctx->pix_fmt = PIX_FMT_NB;
|
ext/ffmpeg/gstffmpegcodecmap.*: Change some function names to reflect that they don't really _return_ something, but ...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_get_palette),
(gst_ffmpeg_set_palette), (gst_ffmpeg_codecid_to_caps),
(gst_ffmpeg_pixfmt_to_caps), (gst_ffmpeg_caps_to_smpfmt),
(gst_ffmpeg_caps_to_pixfmt), (gst_ffmpeg_caps_with_codectype),
(gst_ffmpeg_caps_with_codecid), (gst_ffmpeg_caps_to_codecid):
* ext/ffmpeg/gstffmpegcodecmap.h:
Change some function names to reflect that they don't really
_return_ something, but rather _use_ something to fill a
AVCodecContext. s/to/with/. Restructure the extradata handling,
it's now not picking up the type from the caps but rather
using the type as provided in the function. This is a lot
cleaner. Implement MS RLE palette pickup.
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_pad_link):
* ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_connect):
Sync with the above function name changes.
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_close),
(gst_ffmpegdec_open), (gst_ffmpegdec_connect),
(gst_ffmpegdec_chain), (gst_ffmpegdec_change_state):
Add some hacks to convert palette-based raw image formats to
RGBA32. Ugly, but I don't know how else to handle palette-based
RGB, since img_convert() (and thus ffcolorspace) doesn't accept
a palette as argument.
2004-04-16 01:28:36 +00:00
|
|
|
gst_ffmpeg_caps_with_codectype (CODEC_TYPE_VIDEO, caps, ctx);
|
2003-12-31 08:02:04 +00:00
|
|
|
if (ctx->pix_fmt == PIX_FMT_NB) {
|
|
|
|
av_free (ctx);
|
|
|
|
|
|
|
|
/* we disable ourself here */
|
|
|
|
if (pad == space->srcpad) {
|
|
|
|
space->to_pixfmt = PIX_FMT_NB;
|
|
|
|
} else {
|
|
|
|
space->from_pixfmt = PIX_FMT_NB;
|
|
|
|
}
|
|
|
|
|
2003-10-25 16:29:13 +00:00
|
|
|
return GST_PAD_LINK_REFUSED;
|
|
|
|
}
|
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
/* set the size on the otherpad */
|
|
|
|
othercaps = gst_pad_get_negotiated_caps (otherpad);
|
|
|
|
if (othercaps) {
|
|
|
|
GstCaps *caps = gst_caps_copy (othercaps);
|
|
|
|
|
|
|
|
gst_caps_set_simple (caps,
|
|
|
|
"width", G_TYPE_INT, width,
|
|
|
|
"height", G_TYPE_INT, height,
|
2004-03-29 16:39:18 +00:00
|
|
|
"framerate", G_TYPE_DOUBLE, framerate, NULL);
|
2003-12-31 08:02:04 +00:00
|
|
|
ret = gst_pad_try_set_caps (otherpad, caps);
|
|
|
|
if (GST_PAD_LINK_FAILED (ret)) {
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
return ret;
|
|
|
|
}
|
2003-12-31 08:02:04 +00:00
|
|
|
}
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
if (pad == space->srcpad) {
|
|
|
|
space->to_pixfmt = ctx->pix_fmt;
|
|
|
|
} else {
|
|
|
|
space->from_pixfmt = ctx->pix_fmt;
|
2004-10-02 14:10:27 +00:00
|
|
|
|
|
|
|
/* palette */
|
|
|
|
if (space->palette)
|
|
|
|
av_free (space->palette);
|
|
|
|
space->palette = ctx->palctrl;
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
}
|
2003-12-31 08:02:04 +00:00
|
|
|
av_free (ctx);
|
|
|
|
if (space->from_frame)
|
|
|
|
av_free (space->from_frame);
|
|
|
|
if (space->to_frame)
|
|
|
|
av_free (space->to_frame);
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
|
2004-01-02 23:06:49 +00:00
|
|
|
space->width = width;
|
|
|
|
space->height = height;
|
2003-10-25 16:29:13 +00:00
|
|
|
|
2003-12-31 08:02:04 +00:00
|
|
|
space->from_frame = avcodec_alloc_frame ();
|
|
|
|
space->to_frame = avcodec_alloc_frame ();
|
|
|
|
|
|
|
|
return GST_PAD_LINK_OK;
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
}
|
|
|
|
|
2003-10-25 16:29:13 +00:00
|
|
|
static GType
|
|
|
|
gst_ffmpegcsp_get_type (void)
|
|
|
|
{
|
|
|
|
static GType ffmpegcsp_type = 0;
|
|
|
|
|
|
|
|
if (!ffmpegcsp_type) {
|
|
|
|
static const GTypeInfo ffmpegcsp_info = {
|
|
|
|
sizeof (GstFFMpegCspClass),
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
(GBaseInitFunc) gst_ffmpegcsp_base_init,
|
2003-10-25 16:29:13 +00:00
|
|
|
NULL,
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
(GClassInitFunc) gst_ffmpegcsp_class_init,
|
2003-10-25 16:29:13 +00:00
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
sizeof (GstFFMpegCsp),
|
|
|
|
0,
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
(GInstanceInitFunc) gst_ffmpegcsp_init,
|
2003-10-25 16:29:13 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
ffmpegcsp_type = g_type_register_static (GST_TYPE_ELEMENT,
|
2004-03-29 16:39:18 +00:00
|
|
|
"GstFFMpegCsp", &ffmpegcsp_info, 0);
|
2003-10-25 16:29:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return ffmpegcsp_type;
|
|
|
|
}
|
|
|
|
|
2003-11-02 13:12:14 +00:00
|
|
|
static void
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_base_init (GstFFMpegCspClass * klass)
|
2003-11-02 13:12:14 +00:00
|
|
|
{
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
|
2003-11-02 13:12:14 +00:00
|
|
|
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
gst_element_class_add_pad_template (element_class, srctempl);
|
|
|
|
gst_element_class_add_pad_template (element_class, sinktempl);
|
2003-11-02 13:12:14 +00:00
|
|
|
gst_element_class_set_details (element_class, &ffmpegcsp_details);
|
|
|
|
}
|
|
|
|
|
2003-10-25 16:29:13 +00:00
|
|
|
static void
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_class_init (GstFFMpegCspClass * klass)
|
2003-10-25 16:29:13 +00:00
|
|
|
{
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
GObjectClass *gobject_class;
|
|
|
|
GstElementClass *gstelement_class;
|
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
gobject_class = (GObjectClass *) klass;
|
|
|
|
gstelement_class = (GstElementClass *) klass;
|
2003-10-25 16:29:13 +00:00
|
|
|
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
|
|
|
|
|
|
|
|
gobject_class->set_property = gst_ffmpegcsp_set_property;
|
|
|
|
gobject_class->get_property = gst_ffmpegcsp_get_property;
|
2003-10-25 16:29:13 +00:00
|
|
|
|
|
|
|
gstelement_class->change_state = gst_ffmpegcsp_change_state;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_init (GstFFMpegCsp * space)
|
2003-10-25 16:29:13 +00:00
|
|
|
{
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
space->sinkpad = gst_pad_new_from_template (sinktempl, "sink");
|
2003-12-31 08:02:04 +00:00
|
|
|
gst_pad_set_link_function (space->sinkpad, gst_ffmpegcsp_pad_link);
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
gst_pad_set_getcaps_function (space->sinkpad, gst_ffmpegcsp_getcaps);
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_pad_set_chain_function (space->sinkpad, gst_ffmpegcsp_chain);
|
|
|
|
gst_element_add_pad (GST_ELEMENT (space), space->sinkpad);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
space->srcpad = gst_pad_new_from_template (srctempl, "src");
|
2003-10-25 16:29:13 +00:00
|
|
|
gst_element_add_pad (GST_ELEMENT (space), space->srcpad);
|
2003-12-31 08:02:04 +00:00
|
|
|
gst_pad_set_link_function (space->srcpad, gst_ffmpegcsp_pad_link);
|
|
|
|
gst_pad_set_getcaps_function (space->srcpad, gst_ffmpegcsp_getcaps);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
|
|
|
space->from_pixfmt = space->to_pixfmt = PIX_FMT_NB;
|
|
|
|
space->from_frame = space->to_frame = NULL;
|
2004-10-02 14:10:27 +00:00
|
|
|
space->palette = NULL;
|
2003-10-25 16:29:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_chain (GstPad * pad, GstData * data)
|
2003-10-25 16:29:13 +00:00
|
|
|
{
|
2003-12-22 01:46:58 +00:00
|
|
|
GstBuffer *inbuf = GST_BUFFER (data);
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
GstFFMpegCsp *space;
|
2003-10-25 16:29:13 +00:00
|
|
|
GstBuffer *outbuf = NULL;
|
|
|
|
|
|
|
|
g_return_if_fail (pad != NULL);
|
|
|
|
g_return_if_fail (GST_IS_PAD (pad));
|
|
|
|
g_return_if_fail (inbuf != NULL);
|
|
|
|
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
space = GST_FFMPEGCSP (gst_pad_get_parent (pad));
|
2004-03-29 16:39:18 +00:00
|
|
|
|
2003-10-25 16:29:13 +00:00
|
|
|
g_return_if_fail (space != NULL);
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
g_return_if_fail (GST_IS_FFMPEGCSP (space));
|
2003-10-25 16:29:13 +00:00
|
|
|
|
2004-07-21 09:20:55 +00:00
|
|
|
if (!GST_PAD_IS_USABLE (space->srcpad)) {
|
|
|
|
gst_buffer_unref (inbuf);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2004-03-29 16:39:18 +00:00
|
|
|
if (space->from_pixfmt == PIX_FMT_NB || space->to_pixfmt == PIX_FMT_NB) {
|
2004-04-16 02:06:23 +00:00
|
|
|
GST_ELEMENT_ERROR (space, CORE, NOT_IMPLEMENTED, (NULL),
|
2004-03-29 16:39:18 +00:00
|
|
|
("attempting to convert colorspaces between unknown formats"));
|
2003-10-25 16:29:13 +00:00
|
|
|
gst_buffer_unref (inbuf);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (space->from_pixfmt == space->to_pixfmt) {
|
|
|
|
outbuf = inbuf;
|
|
|
|
} else {
|
2004-10-02 14:10:27 +00:00
|
|
|
enum PixelFormat from_pixfmt =
|
|
|
|
(space->from_pixfmt == PIX_FMT_PAL8) ?
|
|
|
|
PIX_FMT_RGBA32 : space->from_pixfmt;
|
2003-12-22 01:46:58 +00:00
|
|
|
guint size = avpicture_get_size (space->to_pixfmt,
|
2004-10-02 14:10:27 +00:00
|
|
|
space->width, space->height);
|
|
|
|
GstBuffer *inbuf2;
|
|
|
|
|
|
|
|
if (from_pixfmt != space->from_pixfmt) {
|
|
|
|
/* manual conversion from palette to RGBA32 */
|
|
|
|
gint x, y, pix, wd = space->width;
|
|
|
|
guint8 *dest;
|
|
|
|
guint32 conv;
|
|
|
|
AVPaletteControl *pal = space->palette;
|
|
|
|
|
|
|
|
inbuf2 = gst_buffer_new_and_alloc (4 *
|
|
|
|
space->width * space->height);
|
|
|
|
dest = GST_BUFFER_DATA (inbuf2);
|
|
|
|
|
|
|
|
for (y = 0; y < space->height; y++) {
|
|
|
|
for (x = 0; x < space->width; x++) {
|
|
|
|
pix = GST_BUFFER_DATA (inbuf)[y * wd + x];
|
|
|
|
conv = pal->palette[pix];
|
|
|
|
dest[(y * wd + x) * 4] = ((guint8 *) &conv)[0];
|
|
|
|
dest[(y * wd + x) * 4 + 1] = ((guint8 *) &conv)[1];
|
|
|
|
dest[(y * wd + x) * 4 + 2] = ((guint8 *) &conv)[2];
|
|
|
|
dest[(y * wd + x) * 4 + 3] = ((guint8 *) &conv)[3];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
inbuf2 = inbuf;
|
|
|
|
}
|
2004-03-29 16:39:18 +00:00
|
|
|
|
|
|
|
outbuf = gst_pad_alloc_buffer (space->srcpad, GST_BUFFER_OFFSET_NONE, size);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
|
|
|
/* convert */
|
2004-10-02 14:10:27 +00:00
|
|
|
avpicture_fill ((AVPicture *) space->from_frame, GST_BUFFER_DATA (inbuf2),
|
|
|
|
from_pixfmt, space->width, space->height);
|
2003-10-25 16:29:13 +00:00
|
|
|
avpicture_fill ((AVPicture *) space->to_frame, GST_BUFFER_DATA (outbuf),
|
2004-03-29 16:39:18 +00:00
|
|
|
space->to_pixfmt, space->width, space->height);
|
2003-10-25 16:29:13 +00:00
|
|
|
img_convert ((AVPicture *) space->to_frame, space->to_pixfmt,
|
2004-10-02 14:10:27 +00:00
|
|
|
(AVPicture *) space->from_frame, from_pixfmt,
|
2004-03-29 16:39:18 +00:00
|
|
|
space->width, space->height);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (inbuf);
|
|
|
|
GST_BUFFER_DURATION (outbuf) = GST_BUFFER_DURATION (inbuf);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
2004-10-02 14:10:27 +00:00
|
|
|
if (inbuf != inbuf2)
|
|
|
|
gst_buffer_unref (inbuf2);
|
2003-10-25 16:29:13 +00:00
|
|
|
gst_buffer_unref (inbuf);
|
|
|
|
}
|
|
|
|
|
|
|
|
gst_pad_push (space->srcpad, GST_DATA (outbuf));
|
|
|
|
}
|
|
|
|
|
|
|
|
static GstElementStateReturn
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_change_state (GstElement * element)
|
2003-10-25 16:29:13 +00:00
|
|
|
{
|
|
|
|
GstFFMpegCsp *space;
|
|
|
|
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
space = GST_FFMPEGCSP (element);
|
2003-10-25 16:29:13 +00:00
|
|
|
|
|
|
|
switch (GST_STATE_TRANSITION (element)) {
|
|
|
|
case GST_STATE_PAUSED_TO_READY:
|
|
|
|
if (space->from_frame)
|
|
|
|
av_free (space->from_frame);
|
|
|
|
if (space->to_frame)
|
|
|
|
av_free (space->to_frame);
|
2004-10-02 14:10:27 +00:00
|
|
|
if (space->palette)
|
|
|
|
av_free (space->palette);
|
2003-10-25 16:29:13 +00:00
|
|
|
space->from_frame = NULL;
|
|
|
|
space->to_frame = NULL;
|
2004-10-02 14:10:27 +00:00
|
|
|
space->palette = NULL;
|
2003-10-25 16:29:13 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (parent_class->change_state)
|
|
|
|
return parent_class->change_state (element);
|
|
|
|
|
|
|
|
return GST_STATE_SUCCESS;
|
|
|
|
}
|
|
|
|
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
static void
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_set_property (GObject * object,
|
|
|
|
guint prop_id, const GValue * value, GParamSpec * pspec)
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
{
|
|
|
|
GstFFMpegCsp *space;
|
|
|
|
|
|
|
|
/* it's not null if we got it, but it might not be ours */
|
|
|
|
g_return_if_fail (GST_IS_FFMPEGCSP (object));
|
|
|
|
space = GST_FFMPEGCSP (object);
|
|
|
|
|
|
|
|
switch (prop_id) {
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_get_property (GObject * object,
|
|
|
|
guint prop_id, GValue * value, GParamSpec * pspec)
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
{
|
|
|
|
GstFFMpegCsp *space;
|
|
|
|
|
|
|
|
/* it's not null if we got it, but it might not be ours */
|
|
|
|
g_return_if_fail (GST_IS_FFMPEGCSP (object));
|
|
|
|
space = GST_FFMPEGCSP (object);
|
|
|
|
|
|
|
|
switch (prop_id) {
|
|
|
|
default:
|
|
|
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2003-10-25 16:29:13 +00:00
|
|
|
gboolean
|
2004-03-29 16:39:18 +00:00
|
|
|
gst_ffmpegcsp_register (GstPlugin * plugin)
|
2003-10-25 16:29:13 +00:00
|
|
|
{
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
GstCaps *caps;
|
|
|
|
|
|
|
|
/* template caps */
|
|
|
|
caps = gst_ffmpeg_codectype_to_caps (CODEC_TYPE_VIDEO, NULL);
|
|
|
|
|
|
|
|
/* build templates */
|
2004-03-29 16:39:18 +00:00
|
|
|
srctempl = gst_pad_template_new ("src",
|
|
|
|
GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_copy (caps));
|
2004-10-02 14:10:27 +00:00
|
|
|
|
|
|
|
/* the sink template will do palette handling as well... */
|
2004-03-29 16:39:18 +00:00
|
|
|
sinktempl = gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, caps);
|
ext/ffmpeg/: fix typo in RGB masks, and move back to "old" colorspace capsnego code until whoever wrote this new crap...
Original commit message from CVS:
2003-12-24 Ronald Bultje <rbultje@ronald.bitfreak.net>
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
(gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
(gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
(gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
(gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
(gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
fix typo in RGB masks, and move back to "old" colorspace
capsnego code until whoever wrote this new crap has actually
tested it so that it works.
And yes, this works, keep it that way please.
2003-12-24 00:12:16 +00:00
|
|
|
|
2003-11-02 13:12:14 +00:00
|
|
|
return gst_element_register (plugin, "ffcolorspace",
|
2004-03-29 16:39:18 +00:00
|
|
|
GST_RANK_NONE, GST_TYPE_FFMPEGCSP);
|
2003-10-25 16:29:13 +00:00
|
|
|
}
|