ext/ffmpeg/gstffmpegenc.c: debug and magic number fixes

Original commit message from CVS:

* ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_class_init),
(gst_ffmpegenc_init), (gst_ffmpegenc_setcaps):
debug and magic number fixes
This commit is contained in:
Thomas Vander Stichele 2006-02-11 12:04:31 +00:00
parent bcea38b0d8
commit 929a05fa83
2 changed files with 20 additions and 8 deletions

View file

@ -1,3 +1,9 @@
2006-02-11 Thomas Vander Stichele <thomas at apestaart dot org>
* ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_class_init),
(gst_ffmpegenc_init), (gst_ffmpegenc_setcaps):
debug and magic number fixes
2006-02-10 Edward Hervey <edward@fluendo.com> 2006-02-10 Edward Hervey <edward@fluendo.com>
* ext/ffmpeg/Makefile.am: * ext/ffmpeg/Makefile.am:

View file

@ -35,6 +35,10 @@
#include "gstffmpeg.h" #include "gstffmpeg.h"
#include "gstffmpegcodecmap.h" #include "gstffmpegcodecmap.h"
#define DEFAULT_VIDEO_BITRATE 300000 /* in bps */
#define DEFAULT_VIDEO_GOP_SIZE 15
#define DEFAULT_AUDIO_BITRATE 128000
typedef struct _GstFFMpegEnc GstFFMpegEnc; typedef struct _GstFFMpegEnc GstFFMpegEnc;
struct _GstFFMpegEnc struct _GstFFMpegEnc
@ -214,11 +218,11 @@ gst_ffmpegenc_class_init (GstFFMpegEncClass * klass)
if (klass->in_plugin->type == CODEC_TYPE_VIDEO) { if (klass->in_plugin->type == CODEC_TYPE_VIDEO) {
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BIT_RATE, g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BIT_RATE,
g_param_spec_ulong ("bitrate", "Bit Rate", g_param_spec_ulong ("bitrate", "Bit Rate",
"Target Video Bitrate", 0, G_MAXULONG, 300000, G_PARAM_READWRITE)); "Target Video Bitrate", 0, G_MAXULONG, DEFAULT_VIDEO_BITRATE, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_GOP_SIZE, g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_GOP_SIZE,
g_param_spec_int ("gop_size", "GOP Size", g_param_spec_int ("gop_size", "GOP Size",
"Number of frames within one GOP", "Number of frames within one GOP",
0, G_MAXINT, 15, G_PARAM_READWRITE)); 0, G_MAXINT, DEFAULT_VIDEO_GOP_SIZE, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ME_METHOD, g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ME_METHOD,
g_param_spec_enum ("me_method", "ME Method", g_param_spec_enum ("me_method", "ME Method",
"Motion Estimation Method", "Motion Estimation Method",
@ -233,7 +237,7 @@ gst_ffmpegenc_class_init (GstFFMpegEncClass * klass)
} else if (klass->in_plugin->type == CODEC_TYPE_AUDIO) { } else if (klass->in_plugin->type == CODEC_TYPE_AUDIO) {
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BIT_RATE, g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BIT_RATE,
g_param_spec_ulong ("bitrate", "Bit Rate", g_param_spec_ulong ("bitrate", "Bit Rate",
"Target Audio Bitrate", 0, G_MAXULONG, 128000, G_PARAM_READWRITE)); "Target Audio Bitrate", 0, G_MAXULONG, DEFAULT_AUDIO_BITRATE, G_PARAM_READWRITE));
} }
gstelement_class->change_state = gst_ffmpegenc_change_state; gstelement_class->change_state = gst_ffmpegenc_change_state;
@ -262,14 +266,14 @@ gst_ffmpegenc_init (GstFFMpegEnc * ffmpegenc)
if (oclass->in_plugin->type == CODEC_TYPE_VIDEO) { if (oclass->in_plugin->type == CODEC_TYPE_VIDEO) {
gst_pad_set_chain_function (ffmpegenc->sinkpad, gst_ffmpegenc_chain_video); gst_pad_set_chain_function (ffmpegenc->sinkpad, gst_ffmpegenc_chain_video);
ffmpegenc->bitrate = 300000; ffmpegenc->bitrate = DEFAULT_VIDEO_BITRATE;
ffmpegenc->buffer_size = 512 * 1024; ffmpegenc->buffer_size = 512 * 1024;
ffmpegenc->gop_size = 15; ffmpegenc->gop_size = DEFAULT_VIDEO_GOP_SIZE;
ffmpegenc->rtp_payload_size = 0; ffmpegenc->rtp_payload_size = 0;
} else if (oclass->in_plugin->type == CODEC_TYPE_AUDIO) { } else if (oclass->in_plugin->type == CODEC_TYPE_AUDIO) {
gst_pad_set_chain_function (ffmpegenc->sinkpad, gst_ffmpegenc_chain_audio); gst_pad_set_chain_function (ffmpegenc->sinkpad, gst_ffmpegenc_chain_audio);
ffmpegenc->bitrate = 128000; ffmpegenc->bitrate = DEFAULT_AUDIO_BITRATE;
} }
gst_element_add_pad (GST_ELEMENT (ffmpegenc), ffmpegenc->sinkpad); gst_element_add_pad (GST_ELEMENT (ffmpegenc), ffmpegenc->sinkpad);
@ -395,6 +399,8 @@ gst_ffmpegenc_setcaps (GstPad * pad, GstCaps * caps)
ffmpegenc->context->bit_rate_tolerance = ffmpegenc->bitrate; ffmpegenc->context->bit_rate_tolerance = ffmpegenc->bitrate;
ffmpegenc->context->gop_size = ffmpegenc->gop_size; ffmpegenc->context->gop_size = ffmpegenc->gop_size;
ffmpegenc->context->me_method = ffmpegenc->me_method; ffmpegenc->context->me_method = ffmpegenc->me_method;
GST_DEBUG_OBJECT (ffmpegenc, "Setting avcontext with bitrate %d, gop_size %d",
ffmpegenc->bitrate, ffmpegenc->gop_size);
/* RTP payload used for GOB production (for Asterisk) */ /* RTP payload used for GOB production (for Asterisk) */
if (ffmpegenc->rtp_payload_size) { if (ffmpegenc->rtp_payload_size) {
@ -424,7 +430,7 @@ gst_ffmpegenc_setcaps (GstPad * pad, GstCaps * caps)
if (gst_ffmpeg_avcodec_open (ffmpegenc->context, oclass->in_plugin) < 0) { if (gst_ffmpeg_avcodec_open (ffmpegenc->context, oclass->in_plugin) < 0) {
if (ffmpegenc->context->priv_data) if (ffmpegenc->context->priv_data)
gst_ffmpeg_avcodec_close (ffmpegenc->context); gst_ffmpeg_avcodec_close (ffmpegenc->context);
GST_DEBUG ("ffenc_%s: Failed to open FFMPEG codec", GST_DEBUG_OBJECT (ffmpegenc, "ffenc_%s: Failed to open FFMPEG codec",
oclass->in_plugin->name); oclass->in_plugin->name);
return FALSE; return FALSE;
} }
@ -432,7 +438,7 @@ gst_ffmpegenc_setcaps (GstPad * pad, GstCaps * caps)
/* is the colourspace correct? */ /* is the colourspace correct? */
if (pix_fmt != ffmpegenc->context->pix_fmt) { if (pix_fmt != ffmpegenc->context->pix_fmt) {
gst_ffmpeg_avcodec_close (ffmpegenc->context); gst_ffmpeg_avcodec_close (ffmpegenc->context);
GST_DEBUG ("ffenc_%s: AV wants different colourspace (%d given, %d wanted)", GST_DEBUG_OBJECT (ffmpegenc, "ffenc_%s: AV wants different colourspace (%d given, %d wanted)",
oclass->in_plugin->name, pix_fmt, ffmpegenc->context->pix_fmt); oclass->in_plugin->name, pix_fmt, ffmpegenc->context->pix_fmt);
return FALSE; return FALSE;
} }