mpeg2enc: store video encoder instance directly in stream writer class

Instead of storing the pad and then only using it to get the
element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1491>
This commit is contained in:
Tim-Philipp Müller 2013-06-23 16:38:49 +01:00 committed by GStreamer Merge Bot
parent 8a745529c7
commit c9d10e2277
3 changed files with 7 additions and 9 deletions

View File

@ -84,7 +84,7 @@ gboolean GstMpeg2Encoder::setup ()
return FALSE; return FALSE;
} }
writer = new GstMpeg2EncStreamWriter (video_encoder->srcpad, &parms); writer = new GstMpeg2EncStreamWriter (video_encoder, &parms);
/* encoding internals */ /* encoding internals */
quantizer = new Quantizer (parms); quantizer = new Quantizer (parms);

View File

@ -32,16 +32,15 @@
* Class init stuff. * Class init stuff.
*/ */
GstMpeg2EncStreamWriter::GstMpeg2EncStreamWriter (GstPad * in_pad, GstMpeg2EncStreamWriter::GstMpeg2EncStreamWriter (GstVideoEncoder * venc,
EncoderParams * params) EncoderParams * params)
{ {
pad = in_pad; video_encoder = GST_VIDEO_ENCODER_CAST (gst_object_ref (venc));
gst_object_ref (pad);
} }
GstMpeg2EncStreamWriter::~GstMpeg2EncStreamWriter () GstMpeg2EncStreamWriter::~GstMpeg2EncStreamWriter ()
{ {
gst_object_unref (pad); gst_object_unref (video_encoder);
} }
void void
@ -50,7 +49,6 @@ GstMpeg2EncStreamWriter::WriteOutBufferUpto (const guint8 * buffer,
{ {
GstVideoCodecFrame *frame; GstVideoCodecFrame *frame;
GstBuffer *buf; GstBuffer *buf;
GstVideoEncoder *video_encoder = GST_VIDEO_ENCODER (GST_PAD_PARENT (pad));
GstMpeg2enc *enc = GST_MPEG2ENC (video_encoder); GstMpeg2enc *enc = GST_MPEG2ENC (video_encoder);
frame = gst_video_encoder_get_oldest_frame (video_encoder); frame = gst_video_encoder_get_oldest_frame (video_encoder);

View File

@ -23,13 +23,13 @@
#ifndef __GST_MPEG2ENCSTREAMWRITER_H__ #ifndef __GST_MPEG2ENCSTREAMWRITER_H__
#define __GST_MPEG2ENCSTREAMWRITER_H__ #define __GST_MPEG2ENCSTREAMWRITER_H__
#include <gst/gst.h> #include <gst/video/video.h>
#include <elemstrmwriter.hh> #include <elemstrmwriter.hh>
class GstMpeg2EncStreamWriter : public ElemStrmWriter { class GstMpeg2EncStreamWriter : public ElemStrmWriter {
public: public:
GstMpeg2EncStreamWriter (GstPad *pad, EncoderParams *params); GstMpeg2EncStreamWriter (GstVideoEncoder *venc, EncoderParams *params);
~GstMpeg2EncStreamWriter (); ~GstMpeg2EncStreamWriter ();
/* output functions */ /* output functions */
@ -38,7 +38,7 @@ class GstMpeg2EncStreamWriter : public ElemStrmWriter {
guint64 BitCount (); guint64 BitCount ();
private: private:
GstPad *pad; GstVideoEncoder *video_encoder;
}; };
#endif /* __GST_MPEG2ENCSTREAMWRITER_H__ */ #endif /* __GST_MPEG2ENCSTREAMWRITER_H__ */