static GstFlowReturn gst_x264_enc_encode_frame (GstX264Enc * encoder,
x264_picture_t * pic_in, GstVideoCodecFrame * input_frame, int *i_nal,
gboolean send);
-static gboolean gst_x264_enc_stop (GstVideoEncoder * encoder);
static gboolean gst_x264_enc_set_format (GstVideoEncoder * video_enc,
GstVideoCodecState * state);
static gboolean gst_x264_enc_propose_allocation (GstVideoEncoder * encoder,
gobject_class->get_property = gst_x264_enc_get_property;
gobject_class->finalize = gst_x264_enc_finalize;
- gstencoder_class->stop = GST_DEBUG_FUNCPTR (gst_x264_enc_stop);
gstencoder_class->set_format = GST_DEBUG_FUNCPTR (gst_x264_enc_set_format);
gstencoder_class->handle_frame =
GST_DEBUG_FUNCPTR (gst_x264_enc_handle_frame);
encoder->x264param.pf_log = gst_x264_enc_log_callback;
encoder->x264param.p_log_private = encoder;
encoder->x264param.i_log_level = X264_LOG_DEBUG;
-
- gst_x264_enc_reset (GST_VIDEO_ENCODER (encoder), FALSE);
}
typedef struct
{
GstX264Enc *x264enc = GST_X264_ENC (encoder);
+ gst_x264_enc_flush_frames (x264enc, FALSE);
+ gst_x264_enc_close_encoder (x264enc);
+
if (hard) {
- gst_x264_enc_flush_frames (x264enc, FALSE);
- gst_x264_enc_close_encoder (x264enc);
+ if (x264enc->input_state)
+ gst_video_codec_state_unref (x264enc->input_state);
+ x264enc->input_state = NULL;
+ x264enc->current_byte_stream = GST_X264_ENC_STREAM_FORMAT_FROM_PROPERTY;
+ } else {
+ gst_x264_enc_init_encoder (x264enc);
}
- if (x264enc->input_state)
- gst_video_codec_state_unref (x264enc->input_state);
- x264enc->input_state = NULL;
- x264enc->current_byte_stream = GST_X264_ENC_STREAM_FORMAT_FROM_PROPERTY;
-
gst_x264_enc_dequeue_all_frames (x264enc);
return TRUE;
&& x264_encoder_delayed_frames (encoder->x264enc) > 0);
}
-static gboolean
-gst_x264_enc_stop (GstVideoEncoder * encoder)
-{
- return gst_x264_enc_reset (encoder, TRUE);
-}
-
static void
gst_x264_enc_reconfig (GstX264Enc * encoder)
{