mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 02:01:12 +00:00
configure.ac: Improve mpeg2enc detection. This is for distributions that do ship mjpegtools, but without mpeg2enc. Al...
Original commit message from CVS: 2003-12-21 Ronald Bultje <rbultje@ronald.bitfreak.net> * configure.ac: Improve mpeg2enc detection. This is for distributions that do ship mjpegtools, but without mpeg2enc. Also does object check for might there ever be ABI incompatibility. * ext/mpeg2enc/gstmpeg2enc.cc: Add Andrew as second maintainer (he's helping me), and also add an error if no caps was set. This happens if I pull before capsnego and that's something I should solve sometime else. * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_blockgroup): Fix time parsing. * gst/matroska/matroska-mux.c: (gst_matroska_mux_audio_pad_link), (gst_matroska_mux_track_header): Add caps to templates. * gst/mpegaudioparse/gstmpegaudioparse.c: (mp3_sink_factory): Add mpegversion=1 to prevent confusion with MPEG/AAC. * gst/mpegstream/gstmpegdemux.c: Remove layer since it causes warnings about unfixed caps. * gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_get): Fix obvious typo (we error out if caps were set, we should of course error out if *no* caps were set). * sys/oss/gstosselement.c: (gst_osselement_convert): Fix format conversion, we confused bits/bytes. * sys/oss/gstosselement.h: Improve documentation for 'bps'. * sys/v4l/TODO: Remove stuff about plugins that need removing - this was done ages ago. * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_init), (gst_v4lmjpegsrc_src_convert), (gst_v4lmjpegsrc_src_query): * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_init), (gst_v4lsrc_src_convert), (gst_v4lsrc_src_query): * sys/v4l2/gstv4l2src.c: (gst_v4l2src_init), (gst_v4l2src_src_convert), (gst_v4l2src_src_query): Add get_query_types(), get_formats() and query() functions.
This commit is contained in:
parent
a17fd964ba
commit
967aca777e
5 changed files with 188 additions and 57 deletions
38
ChangeLog
38
ChangeLog
|
@ -1,3 +1,41 @@
|
|||
2003-12-21 Ronald Bultje <rbultje@ronald.bitfreak.net>
|
||||
|
||||
* configure.ac:
|
||||
Improve mpeg2enc detection. This is for distributions that do
|
||||
ship mjpegtools, but without mpeg2enc. Also does object check
|
||||
for might there ever be ABI incompatibility.
|
||||
* ext/mpeg2enc/gstmpeg2enc.cc:
|
||||
Add Andrew as second maintainer (he's helping me), and also add
|
||||
an error if no caps was set. This happens if I pull before capsnego
|
||||
and that's something I should solve sometime else.
|
||||
* gst/matroska/matroska-demux.c:
|
||||
(gst_matroska_demux_parse_blockgroup):
|
||||
Fix time parsing.
|
||||
* gst/matroska/matroska-mux.c: (gst_matroska_mux_audio_pad_link),
|
||||
(gst_matroska_mux_track_header):
|
||||
Add caps to templates.
|
||||
* gst/mpegaudioparse/gstmpegaudioparse.c: (mp3_sink_factory):
|
||||
Add mpegversion=1 to prevent confusion with MPEG/AAC.
|
||||
* gst/mpegstream/gstmpegdemux.c:
|
||||
Remove layer since it causes warnings about unfixed caps.
|
||||
* gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_get):
|
||||
Fix obvious typo (we error out if caps were set, we should of
|
||||
course error out if *no* caps were set).
|
||||
* sys/oss/gstosselement.c: (gst_osselement_convert):
|
||||
Fix format conversion, we confused bits/bytes.
|
||||
* sys/oss/gstosselement.h:
|
||||
Improve documentation for 'bps'.
|
||||
* sys/v4l/TODO:
|
||||
Remove stuff about plugins that need removing - this was done
|
||||
ages ago.
|
||||
* sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_init),
|
||||
(gst_v4lmjpegsrc_src_convert), (gst_v4lmjpegsrc_src_query):
|
||||
* sys/v4l/gstv4lsrc.c: (gst_v4lsrc_init), (gst_v4lsrc_src_convert),
|
||||
(gst_v4lsrc_src_query):
|
||||
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_init),
|
||||
(gst_v4l2src_src_convert), (gst_v4l2src_src_query):
|
||||
Add get_query_types(), get_formats() and query() functions.
|
||||
|
||||
2003-12-21 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* ChangeLog: moved to gstreamer/docs/random/old/ChangeLog.gst-plugins
|
||||
|
|
46
configure.ac
46
configure.ac
|
@ -1076,16 +1076,52 @@ GST_CHECK_FEATURE(MPEG2DEC, [mpeg2dec], mpeg2dec, [
|
|||
dnl *** mpeg2enc ***
|
||||
translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2ENC, true)
|
||||
GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [
|
||||
PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.92,
|
||||
HAVE_MPEG2ENC="yes", HAVE_MPEG2ENC="no")
|
||||
MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp"
|
||||
AC_SUBST(MPEG2ENC_CFLAGS)
|
||||
AC_SUBST(MPEG2ENC_LIBS)
|
||||
HAVE_MPEG2ENC="no"
|
||||
dnl we require a c++ compiler for this one
|
||||
if [ test x$HAVE_CXX = xyes ]; then
|
||||
dnl libmpeg2enc was first included in mjpegtools-1.6.2-rc3 (1.6.1.92)
|
||||
dnl since many distros include mjpegtools specifically without mplex
|
||||
dnl and mpeg2enc, we check for mpeg2enc on its own, too.
|
||||
PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.92, [
|
||||
dnl switch over to c++ to test things
|
||||
AC_LANG_CPLUSPLUS
|
||||
OLD_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $MPEG2ENC_CFLAGS"
|
||||
AC_CHECK_HEADER(mpeg2encoder.hh, [
|
||||
MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp -lm -lpthread"
|
||||
OLD_LIBS="$LIBS"
|
||||
LIBS="$LIBS $MPEG2ENC_LIBS"
|
||||
AC_MSG_CHECKING([for valid mpeg2enc objects])
|
||||
AC_TRY_RUN([
|
||||
#include <mpeg2encoder.hh>
|
||||
#include <mpeg2encoptions.hh>
|
||||
|
||||
int
|
||||
main (int argc,
|
||||
char *argv[])
|
||||
{
|
||||
MPEG2EncOptions *options = new MPEG2EncOptions ();
|
||||
MPEG2Encoder encoder (*options);
|
||||
return 0;
|
||||
}
|
||||
],[
|
||||
HAVE_MPEG2ENC="yes"
|
||||
AC_SUBST(MPEG2ENC_CFLAGS)
|
||||
AC_SUBST(MPEG2ENC_LIBS)
|
||||
AC_MSG_RESULT(yes)
|
||||
], AC_MSG_RESULT(no))
|
||||
LIBS="$OLD_LIBS"
|
||||
])
|
||||
CPPFLAGS="$OLD_CPPFLAGS"
|
||||
AC_LANG_C
|
||||
])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl *** mplex ***
|
||||
translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true)
|
||||
GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [HAVE_MPLEX=$HAVE_CXX])
|
||||
])
|
||||
|
||||
dnl *** pango ***
|
||||
translit(dnm, m, l) AM_CONDITIONAL(USE_PANGO, true)
|
||||
|
|
|
@ -135,7 +135,8 @@ gst_mpeg2enc_base_init (GstMpeg2encClass *klass)
|
|||
"mpeg2enc video encoder",
|
||||
"Codec/Video/Encoder",
|
||||
"High-quality MPEG-1/2 video encoder",
|
||||
"Ronald Bultje <rbultje@ronald.bitfreak.net>",
|
||||
"Andrew Stevens <andrew.stevens@nexgo.de>\n"
|
||||
"Ronald Bultje <rbultje@ronald.bitfreak.net>"
|
||||
};
|
||||
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
|
||||
|
||||
|
@ -209,11 +210,15 @@ gst_mpeg2enc_loop (GstElement *element)
|
|||
if (!enc->encoder) {
|
||||
GstCaps *caps;
|
||||
|
||||
if (!(caps = GST_PAD_CAPS (enc->sinkpad))) {
|
||||
gst_element_error (element,
|
||||
"No format given by previous element");
|
||||
return;
|
||||
}
|
||||
|
||||
/* create new encoder with these settings */
|
||||
enc->encoder = new GstMpeg2Encoder (enc->options,
|
||||
enc->sinkpad,
|
||||
GST_PAD_CAPS (enc->sinkpad),
|
||||
enc->srcpad);
|
||||
enc->encoder = new GstMpeg2Encoder (enc->options, enc->sinkpad,
|
||||
caps, enc->srcpad);
|
||||
|
||||
/* and set caps on other side */
|
||||
caps = enc->encoder->getFormat ();
|
||||
|
|
|
@ -60,11 +60,12 @@ mp3_sink_factory (void)
|
|||
"sink",
|
||||
GST_PAD_SINK,
|
||||
GST_PAD_ALWAYS,
|
||||
gst_caps_new (
|
||||
GST_CAPS_NEW (
|
||||
"mp3parse_sink",
|
||||
"audio/mpeg",
|
||||
NULL),
|
||||
NULL);
|
||||
"mpegversion", GST_PROPS_INT (1)
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
/* GstMPEGAudioParse signals and args */
|
||||
|
|
|
@ -51,56 +51,67 @@ enum {
|
|||
ARG_USE_FIXED_FPS
|
||||
};
|
||||
|
||||
GST_FORMATS_FUNCTION (GstPad *, gst_v4l2src_get_formats,
|
||||
GST_FORMAT_TIME, GST_FORMAT_DEFAULT);
|
||||
GST_QUERY_TYPE_FUNCTION (GstPad *, gst_v4l2src_get_query_types,
|
||||
GST_QUERY_POSITION);
|
||||
|
||||
/* init functions */
|
||||
static void gst_v4l2src_class_init (GstV4l2SrcClass *klass);
|
||||
static void gst_v4l2src_base_init (GstV4l2SrcClass *klass);
|
||||
static void gst_v4l2src_init (GstV4l2Src *v4l2src);
|
||||
static void gst_v4l2src_class_init (GstV4l2SrcClass *klass);
|
||||
static void gst_v4l2src_base_init (GstV4l2SrcClass *klass);
|
||||
static void gst_v4l2src_init (GstV4l2Src *v4l2src);
|
||||
|
||||
/* signal functions */
|
||||
static void gst_v4l2src_open (GstElement *element,
|
||||
const gchar *device);
|
||||
static void gst_v4l2src_close (GstElement *element,
|
||||
const gchar *device);
|
||||
static void gst_v4l2src_open (GstElement *element,
|
||||
const gchar *device);
|
||||
static void gst_v4l2src_close (GstElement *element,
|
||||
const gchar *device);
|
||||
|
||||
/* pad/buffer functions */
|
||||
static gboolean gst_v4l2src_srcconvert (GstPad *pad,
|
||||
GstFormat src_format,
|
||||
gint64 src_value,
|
||||
GstFormat *dest_format,
|
||||
gint64 *dest_value);
|
||||
static GstPadLinkReturn gst_v4l2src_srcconnect (GstPad *pad,
|
||||
GstCaps *caps);
|
||||
static GstCaps * gst_v4l2src_getcaps (GstPad *pad,
|
||||
GstCaps *caps);
|
||||
static GstData * gst_v4l2src_get (GstPad *pad);
|
||||
/* pad/info functions */
|
||||
static gboolean gst_v4l2src_src_convert (GstPad *pad,
|
||||
GstFormat src_format,
|
||||
gint64 src_value,
|
||||
GstFormat *dest_format,
|
||||
gint64 *dest_value);
|
||||
static gboolean gst_v4l2src_src_query (GstPad *pad,
|
||||
GstQueryType type,
|
||||
GstFormat *format,
|
||||
gint64 *value);
|
||||
|
||||
/* buffer functions */
|
||||
static GstPadLinkReturn
|
||||
gst_v4l2src_srcconnect (GstPad *pad,
|
||||
GstCaps *caps);
|
||||
static GstCaps *gst_v4l2src_getcaps (GstPad *pad,
|
||||
GstCaps *caps);
|
||||
static GstData *gst_v4l2src_get (GstPad *pad);
|
||||
|
||||
/* get/set params */
|
||||
static void gst_v4l2src_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static void gst_v4l2src_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static void gst_v4l2src_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static void gst_v4l2src_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec);
|
||||
|
||||
/* state handling */
|
||||
static GstElementStateReturn gst_v4l2src_change_state (GstElement *element);
|
||||
static GstElementStateReturn
|
||||
gst_v4l2src_change_state (GstElement *element);
|
||||
|
||||
/* set_clock function for A/V sync */
|
||||
static void gst_v4l2src_set_clock (GstElement *element,
|
||||
GstClock *clock);
|
||||
|
||||
static void gst_v4l2src_set_clock (GstElement *element,
|
||||
GstClock *clock);
|
||||
|
||||
/* bufferpool functions */
|
||||
static GstBuffer * gst_v4l2src_buffer_new (GstBufferPool *pool,
|
||||
guint64 offset,
|
||||
guint size,
|
||||
gpointer user_data);
|
||||
static void gst_v4l2src_buffer_free (GstBufferPool *pool,
|
||||
GstBuffer *buf,
|
||||
gpointer user_data);
|
||||
static GstBuffer *gst_v4l2src_buffer_new (GstBufferPool *pool,
|
||||
guint64 offset,
|
||||
guint size,
|
||||
gpointer user_data);
|
||||
static void gst_v4l2src_buffer_free (GstBufferPool *pool,
|
||||
GstBuffer *buf,
|
||||
gpointer user_data);
|
||||
|
||||
|
||||
static GstPadTemplate *src_template;
|
||||
|
@ -220,8 +231,14 @@ gst_v4l2src_init (GstV4l2Src *v4l2src)
|
|||
|
||||
gst_pad_set_get_function(v4l2src->srcpad, gst_v4l2src_get);
|
||||
gst_pad_set_link_function(v4l2src->srcpad, gst_v4l2src_srcconnect);
|
||||
gst_pad_set_convert_function (v4l2src->srcpad, gst_v4l2src_srcconvert);
|
||||
gst_pad_set_getcaps_function (v4l2src->srcpad, gst_v4l2src_getcaps);
|
||||
gst_pad_set_convert_function (v4l2src->srcpad, gst_v4l2src_src_convert);
|
||||
gst_pad_set_formats_function (v4l2src->srcpad,
|
||||
gst_v4l2src_get_formats);
|
||||
gst_pad_set_query_function (v4l2src->srcpad,
|
||||
gst_v4l2src_src_query);
|
||||
gst_pad_set_query_type_function (v4l2src->srcpad,
|
||||
gst_v4l2src_get_query_types);
|
||||
|
||||
v4l2src->bufferpool = gst_buffer_pool_new(NULL, NULL,
|
||||
gst_v4l2src_buffer_new,
|
||||
|
@ -290,13 +307,12 @@ gst_v4l2src_get_fps (GstV4l2Src *v4l2src)
|
|||
return 0.;
|
||||
}
|
||||
|
||||
|
||||
static gboolean
|
||||
gst_v4l2src_srcconvert (GstPad *pad,
|
||||
GstFormat src_format,
|
||||
gint64 src_value,
|
||||
GstFormat *dest_format,
|
||||
gint64 *dest_value)
|
||||
gst_v4l2src_src_convert (GstPad *pad,
|
||||
GstFormat src_format,
|
||||
gint64 src_value,
|
||||
GstFormat *dest_format,
|
||||
gint64 *dest_value)
|
||||
{
|
||||
GstV4l2Src *v4l2src;
|
||||
gdouble fps;
|
||||
|
@ -334,6 +350,41 @@ gst_v4l2src_srcconvert (GstPad *pad,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_v4l2src_src_query (GstPad *pad,
|
||||
GstQueryType type,
|
||||
GstFormat *format,
|
||||
gint64 *value)
|
||||
{
|
||||
GstV4l2Src *v4l2src = GST_V4L2SRC (gst_pad_get_parent (pad));
|
||||
gboolean res = TRUE;
|
||||
gdouble fps;
|
||||
|
||||
if ((fps = gst_v4l2src_get_fps(v4l2src)) == 0)
|
||||
return FALSE;
|
||||
|
||||
switch (type) {
|
||||
case GST_QUERY_POSITION:
|
||||
switch (*format) {
|
||||
case GST_FORMAT_TIME:
|
||||
*value = v4l2src->handled * GST_SECOND / fps;
|
||||
break;
|
||||
case GST_FORMAT_DEFAULT:
|
||||
*value = v4l2src->handled;
|
||||
break;
|
||||
default:
|
||||
res = FALSE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
res = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
static GstCaps *
|
||||
gst_v4l2src_v4l2fourcc_to_caps (guint32 fourcc,
|
||||
|
|
Loading…
Reference in a new issue