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:
parent
8a745529c7
commit
c9d10e2277
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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__ */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user