mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-12 02:15:31 +00:00
Add support for building against mjpegtools 1.9 while keeping compatiblity with older versions.
Original commit message from CVS: Based on a patch by: Hans de Goede <j dot w dot r dot degoede at hhs dot nl> * configure.ac: * ext/mpeg2enc/gstmpeg2encoder.cc: * ext/mpeg2enc/gstmpeg2encpicturereader.cc: * ext/mpeg2enc/gstmpeg2encpicturereader.hh: Add support for building against mjpegtools 1.9 while keeping compatiblity with older versions.
This commit is contained in:
parent
1a787a0cb2
commit
5b791c2ce5
5 changed files with 77 additions and 9 deletions
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2008-01-27 Sebastian Dröge <slomo@circular-chaos.org>
|
||||||
|
|
||||||
|
Based on a patch by:
|
||||||
|
Hans de Goede <j dot w dot r dot degoede at hhs dot nl>
|
||||||
|
|
||||||
|
* configure.ac:
|
||||||
|
* ext/mpeg2enc/gstmpeg2encoder.cc:
|
||||||
|
* ext/mpeg2enc/gstmpeg2encpicturereader.cc:
|
||||||
|
* ext/mpeg2enc/gstmpeg2encpicturereader.hh:
|
||||||
|
Add support for building against mjpegtools 1.9 while keeping
|
||||||
|
compatiblity with older versions.
|
||||||
|
|
||||||
2008-01-27 Sebastian Dröge <slomo@circular-chaos.org>
|
2008-01-27 Sebastian Dröge <slomo@circular-chaos.org>
|
||||||
|
|
||||||
* ext/soundtouch/gstbpmdetect.cc:
|
* ext/soundtouch/gstbpmdetect.cc:
|
||||||
|
|
12
configure.ac
12
configure.ac
|
@ -676,7 +676,14 @@ AC_SUBST(LIBMMS_LIBS)
|
||||||
dnl *** mjpegtools version info ***
|
dnl *** mjpegtools version info ***
|
||||||
dnl some may prefer older version (given quirks above)
|
dnl some may prefer older version (given quirks above)
|
||||||
dnl hm, no version info seems available within mjpegtools headers
|
dnl hm, no version info seems available within mjpegtools headers
|
||||||
PKG_CHECK_EXISTS(mjpegtools >= 1.8.0 mjpegtools < 1.9.0, [
|
|
||||||
|
PKG_CHECK_EXISTS(mjpegtools >= 1.9.0 mjpegtools < 1.10.0, [
|
||||||
|
AC_DEFINE(GST_MJPEGTOOLS_19x, 1, [mjpegtools >= 1.9.0 is used])
|
||||||
|
have_mpjegtools_19x=yes
|
||||||
|
], [
|
||||||
|
have_mpjegtools_19x=no])
|
||||||
|
|
||||||
|
PKG_CHECK_EXISTS(mjpegtools >= 1.8.0, [
|
||||||
AC_DEFINE(GST_MJPEGTOOLS_18x, 1, [mjpegtools >= 1.8.0 is used])
|
AC_DEFINE(GST_MJPEGTOOLS_18x, 1, [mjpegtools >= 1.8.0 is used])
|
||||||
have_mpjegtools_18x=yes
|
have_mpjegtools_18x=yes
|
||||||
], [
|
], [
|
||||||
|
@ -732,7 +739,10 @@ AG_GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [
|
||||||
], [
|
], [
|
||||||
mpeg2enc_headers_ok=no
|
mpeg2enc_headers_ok=no
|
||||||
])
|
])
|
||||||
|
else
|
||||||
|
mpeg2enc_headers_ok=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$mpeg2enc_headers_ok" = "xyes"; then
|
if test "x$mpeg2enc_headers_ok" = "xyes"; then
|
||||||
HAVE_MPEG2ENC="yes"
|
HAVE_MPEG2ENC="yes"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -26,7 +26,11 @@
|
||||||
|
|
||||||
#include <mpegconsts.h>
|
#include <mpegconsts.h>
|
||||||
#include <quantize.hh>
|
#include <quantize.hh>
|
||||||
|
#ifdef GST_MJPEGTOOLS_19x
|
||||||
|
#include <ontheflyratectl.hh>
|
||||||
|
#else
|
||||||
#include <ratectl.hh>
|
#include <ratectl.hh>
|
||||||
|
#endif
|
||||||
#include <seqencoder.hh>
|
#include <seqencoder.hh>
|
||||||
#include <mpeg2coder.hh>
|
#include <mpeg2coder.hh>
|
||||||
|
|
||||||
|
@ -53,19 +57,18 @@ GstMpeg2Encoder::~GstMpeg2Encoder ()
|
||||||
gst_object_unref (element);
|
gst_object_unref (element);
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean GstMpeg2Encoder::setup ()
|
gboolean
|
||||||
|
GstMpeg2Encoder::setup ()
|
||||||
{
|
{
|
||||||
MPEG2EncInVidParams
|
MPEG2EncInVidParams strm;
|
||||||
strm;
|
GstMpeg2enc *enc;
|
||||||
GstMpeg2enc *
|
|
||||||
enc;
|
|
||||||
|
|
||||||
enc = GST_MPEG2ENC (element);
|
enc = GST_MPEG2ENC (element);
|
||||||
|
|
||||||
/* I/O */
|
/* I/O */
|
||||||
reader = new GstMpeg2EncPictureReader (element, caps, &parms);
|
reader = new GstMpeg2EncPictureReader (element, caps, &parms);
|
||||||
reader->StreamPictureParams (strm);
|
reader->StreamPictureParams (strm);
|
||||||
#ifdef GST_MJPEGTOOLS_18x
|
#if defined(GST_MJPEGTOOLS_18x) && !defined(GST_MJPEGTOOLS_19x)
|
||||||
/* chain thread caters for reading, do not need another thread for this */
|
/* chain thread caters for reading, do not need another thread for this */
|
||||||
options.allow_parallel_read = FALSE;
|
options.allow_parallel_read = FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
@ -76,11 +79,22 @@ gboolean GstMpeg2Encoder::setup ()
|
||||||
|
|
||||||
/* encoding internals */
|
/* encoding internals */
|
||||||
quantizer = new Quantizer (parms);
|
quantizer = new Quantizer (parms);
|
||||||
|
#ifdef GST_MJPEGTOOLS_19x
|
||||||
|
pass1ratectl = new OnTheFlyPass1 (parms);
|
||||||
|
pass2ratectl = new OnTheFlyPass2 (parms);
|
||||||
|
#else
|
||||||
bitrate_controller = new OnTheFlyRateCtl (parms);
|
bitrate_controller = new OnTheFlyRateCtl (parms);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef GST_MJPEGTOOLS_18x
|
#ifdef GST_MJPEGTOOLS_18x
|
||||||
/* sequencer */
|
/* sequencer */
|
||||||
|
# ifdef GST_MJPEGTOOLS_19x
|
||||||
|
seqencoder = new SeqEncoder (parms, *reader, *quantizer,
|
||||||
|
*writer, *pass1ratectl, *pass2ratectl);
|
||||||
|
# else
|
||||||
seqencoder = new SeqEncoder (parms, *reader, *quantizer,
|
seqencoder = new SeqEncoder (parms, *reader, *quantizer,
|
||||||
*writer, *bitrate_controller);
|
*writer, *bitrate_controller);
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
coder = new MPEG2Coder (parms, *writer);
|
coder = new MPEG2Coder (parms, *writer);
|
||||||
/* sequencer */
|
/* sequencer */
|
||||||
|
|
|
@ -25,6 +25,10 @@
|
||||||
|
|
||||||
#include <encoderparams.hh>
|
#include <encoderparams.hh>
|
||||||
|
|
||||||
|
#ifdef GST_MJPEGTOOLS_19x
|
||||||
|
#include <imageplanes.hh>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "gstmpeg2enc.hh"
|
#include "gstmpeg2enc.hh"
|
||||||
#include "gstmpeg2encpicturereader.hh"
|
#include "gstmpeg2encpicturereader.hh"
|
||||||
|
|
||||||
|
@ -79,9 +83,17 @@ GstMpeg2EncPictureReader::StreamPictureParams (MPEG2EncInVidParams & strm)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
#ifdef GST_MJPEGTOOLS_19x
|
||||||
|
GstMpeg2EncPictureReader::LoadFrame (ImagePlanes & image)
|
||||||
|
#else
|
||||||
GstMpeg2EncPictureReader::LoadFrame ()
|
GstMpeg2EncPictureReader::LoadFrame ()
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
gint i, x, y, n;
|
|
||||||
|
#ifndef GST_MJPEGTOOLS_19x
|
||||||
|
gint n;
|
||||||
|
#endif
|
||||||
|
gint i, x, y;
|
||||||
guint8 *frame;
|
guint8 *frame;
|
||||||
GstMpeg2enc *enc;
|
GstMpeg2enc *enc;
|
||||||
|
|
||||||
|
@ -100,23 +112,39 @@ GstMpeg2EncPictureReader::LoadFrame ()
|
||||||
}
|
}
|
||||||
|
|
||||||
frame = GST_BUFFER_DATA (enc->buffer);
|
frame = GST_BUFFER_DATA (enc->buffer);
|
||||||
|
#ifndef GST_MJPEGTOOLS_19x
|
||||||
n = frames_read % input_imgs_buf_size;
|
n = frames_read % input_imgs_buf_size;
|
||||||
|
#endif
|
||||||
x = encparams.horizontal_size;
|
x = encparams.horizontal_size;
|
||||||
y = encparams.vertical_size;
|
y = encparams.vertical_size;
|
||||||
|
|
||||||
for (i = 0; i < y; i++) {
|
for (i = 0; i < y; i++) {
|
||||||
|
#ifdef GST_MJPEGTOOLS_19x
|
||||||
|
memcpy (image.Plane (0) + i * encparams.phy_width, frame, x);
|
||||||
|
#else
|
||||||
memcpy (input_imgs_buf[n][0] + i * encparams.phy_width, frame, x);
|
memcpy (input_imgs_buf[n][0] + i * encparams.phy_width, frame, x);
|
||||||
|
#endif
|
||||||
frame += x;
|
frame += x;
|
||||||
}
|
}
|
||||||
|
#ifndef GST_MJPEGTOOLS_19x
|
||||||
lum_mean[n] = LumMean (input_imgs_buf[n][0]);
|
lum_mean[n] = LumMean (input_imgs_buf[n][0]);
|
||||||
|
#endif
|
||||||
x >>= 1;
|
x >>= 1;
|
||||||
y >>= 1;
|
y >>= 1;
|
||||||
for (i = 0; i < y; i++) {
|
for (i = 0; i < y; i++) {
|
||||||
|
#ifdef GST_MJPEGTOOLS_19x
|
||||||
|
memcpy (image.Plane (1) + i * encparams.phy_chrom_width, frame, x);
|
||||||
|
#else
|
||||||
memcpy (input_imgs_buf[n][1] + i * encparams.phy_chrom_width, frame, x);
|
memcpy (input_imgs_buf[n][1] + i * encparams.phy_chrom_width, frame, x);
|
||||||
|
#endif
|
||||||
frame += x;
|
frame += x;
|
||||||
}
|
}
|
||||||
for (i = 0; i < y; i++) {
|
for (i = 0; i < y; i++) {
|
||||||
|
#ifdef GST_MJPEGTOOLS_19x
|
||||||
|
memcpy (image.Plane (2) + i * encparams.phy_chrom_width, frame, x);
|
||||||
|
#else
|
||||||
memcpy (input_imgs_buf[n][2] + i * encparams.phy_chrom_width, frame, x);
|
memcpy (input_imgs_buf[n][2] + i * encparams.phy_chrom_width, frame, x);
|
||||||
|
#endif
|
||||||
frame += x;
|
frame += x;
|
||||||
}
|
}
|
||||||
gst_buffer_unref (enc->buffer);
|
gst_buffer_unref (enc->buffer);
|
||||||
|
|
|
@ -37,7 +37,11 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/* read a frame */
|
/* read a frame */
|
||||||
|
#ifdef GST_MJPEGTOOLS_19x
|
||||||
|
bool LoadFrame (ImagePlanes &image);
|
||||||
|
#else
|
||||||
bool LoadFrame ();
|
bool LoadFrame ();
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GstElement *element;
|
GstElement *element;
|
||||||
|
|
Loading…
Reference in a new issue