Lines Matching full:encoder
42 #define GST_MPP_ENC_TASK_STARTED(encoder) \ argument
43 (gst_pad_get_task_state ((encoder)->srcpad) == GST_TASK_STARTED)
45 #define GST_MPP_ENC_MUTEX(encoder) (&GST_MPP_ENC (encoder)->mutex) argument
47 #define GST_MPP_ENC_LOCK(encoder) \ argument
48 GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder); \
49 g_mutex_lock (GST_MPP_ENC_MUTEX (encoder)); \
50 GST_VIDEO_ENCODER_STREAM_LOCK (encoder);
52 #define GST_MPP_ENC_UNLOCK(encoder) \ argument
53 g_mutex_unlock (GST_MPP_ENC_MUTEX (encoder));
55 #define GST_MPP_ENC_EVENT_MUTEX(encoder) (&GST_MPP_ENC (encoder)->event_mutex) argument
56 #define GST_MPP_ENC_EVENT_COND(encoder) (&GST_MPP_ENC (encoder)->event_cond) argument
58 #define GST_MPP_ENC_BROADCAST(encoder) \ argument
59 g_mutex_lock (GST_MPP_ENC_EVENT_MUTEX (encoder)); \
60 g_cond_broadcast (GST_MPP_ENC_EVENT_COND (encoder)); \
61 g_mutex_unlock (GST_MPP_ENC_EVENT_MUTEX (encoder));
63 #define GST_MPP_ENC_WAIT(encoder, condition) \ argument
64 g_mutex_lock (GST_MPP_ENC_EVENT_MUTEX (encoder)); \
66 g_cond_wait (GST_MPP_ENC_EVENT_COND (encoder), \
67 GST_MPP_ENC_EVENT_MUTEX (encoder)); \
68 g_mutex_unlock (GST_MPP_ENC_EVENT_MUTEX (encoder));
198 GstVideoEncoder *encoder = GST_VIDEO_ENCODER (object); in gst_mpp_enc_set_property() local
199 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_set_property()
268 GST_WARNING_OBJECT (encoder, "unable to change rotation"); in gst_mpp_enc_set_property()
275 GST_WARNING_OBJECT (encoder, "unable to change width"); in gst_mpp_enc_set_property()
282 GST_WARNING_OBJECT (encoder, "unable to change height"); in gst_mpp_enc_set_property()
293 GST_WARNING_OBJECT (encoder, "unable to change ARM AFBC"); in gst_mpp_enc_set_property()
310 GstVideoEncoder *encoder = GST_VIDEO_ENCODER (object); in gst_mpp_enc_get_property() local
311 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_get_property()
360 gst_mpp_enc_apply_properties (GstVideoEncoder * encoder) in gst_mpp_enc_apply_properties() argument
362 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_apply_properties()
416 gst_mpp_enc_set_src_caps (GstVideoEncoder * encoder, GstCaps * caps) in gst_mpp_enc_set_src_caps() argument
418 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_set_src_caps()
428 output_state = gst_video_encoder_set_output_state (encoder, in gst_mpp_enc_set_src_caps()
435 return gst_video_encoder_negotiate (encoder); in gst_mpp_enc_set_src_caps()
439 gst_mpp_enc_stop_task (GstVideoEncoder * encoder, gboolean drain) in gst_mpp_enc_stop_task() argument
441 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_stop_task()
442 GstTask *task = encoder->srcpad->task; in gst_mpp_enc_stop_task()
444 if (!GST_MPP_ENC_TASK_STARTED (encoder)) in gst_mpp_enc_stop_task()
453 GST_MPP_ENC_BROADCAST (encoder); in gst_mpp_enc_stop_task()
455 GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder); in gst_mpp_enc_stop_task()
464 gst_pad_stop_task (encoder->srcpad); in gst_mpp_enc_stop_task()
465 GST_VIDEO_ENCODER_STREAM_LOCK (encoder); in gst_mpp_enc_stop_task()
469 gst_mpp_enc_reset (GstVideoEncoder * encoder, gboolean drain, gboolean final) in gst_mpp_enc_reset() argument
471 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_reset()
473 GST_MPP_ENC_LOCK (encoder); in gst_mpp_enc_reset()
480 gst_mpp_enc_stop_task (encoder, drain); in gst_mpp_enc_reset()
492 GST_MPP_ENC_UNLOCK (encoder); in gst_mpp_enc_reset()
496 gst_mpp_enc_start (GstVideoEncoder * encoder) in gst_mpp_enc_start() argument
498 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_start()
551 gst_mpp_enc_stop (GstVideoEncoder * encoder) in gst_mpp_enc_stop() argument
553 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_stop()
557 GST_VIDEO_ENCODER_STREAM_LOCK (encoder); in gst_mpp_enc_stop()
558 gst_mpp_enc_reset (encoder, FALSE, TRUE); in gst_mpp_enc_stop()
559 GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder); in gst_mpp_enc_stop()
582 gst_mpp_enc_flush (GstVideoEncoder * encoder) in gst_mpp_enc_flush() argument
584 GST_DEBUG_OBJECT (encoder, "flushing"); in gst_mpp_enc_flush()
585 gst_mpp_enc_reset (encoder, FALSE, FALSE); in gst_mpp_enc_flush()
590 gst_mpp_enc_finish (GstVideoEncoder * encoder) in gst_mpp_enc_finish() argument
592 GST_DEBUG_OBJECT (encoder, "finishing"); in gst_mpp_enc_finish()
593 gst_mpp_enc_reset (encoder, TRUE, FALSE); in gst_mpp_enc_finish()
598 gst_mpp_enc_set_format (GstVideoEncoder * encoder, GstVideoCodecState * state) in gst_mpp_enc_set_format() argument
600 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_set_format()
612 gst_mpp_enc_reset (encoder, TRUE, FALSE); in gst_mpp_enc_set_format()
718 gst_mpp_enc_propose_allocation (GstVideoEncoder * encoder, GstQuery * query) in gst_mpp_enc_propose_allocation() argument
720 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_propose_allocation()
773 return GST_VIDEO_ENCODER_CLASS (parent_class)->propose_allocation (encoder, in gst_mpp_enc_propose_allocation()
778 gst_mpp_enc_convert (GstVideoEncoder * encoder, GstVideoCodecFrame * frame) in gst_mpp_enc_convert() argument
780 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_convert()
883 gst_mpp_enc_force_keyframe (GstVideoEncoder * encoder, gboolean keyframe) in gst_mpp_enc_force_keyframe() argument
885 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_force_keyframe()
891 return gst_mpp_enc_apply_properties (encoder); in gst_mpp_enc_force_keyframe()
906 gst_mpp_enc_loop (GstVideoEncoder * encoder) in gst_mpp_enc_loop() argument
908 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_loop()
918 GST_MPP_ENC_WAIT (encoder, self->pending_frames || self->flushing); in gst_mpp_enc_loop()
920 GST_VIDEO_ENCODER_STREAM_LOCK (encoder); in gst_mpp_enc_loop()
925 frame = gst_video_encoder_get_oldest_frame (encoder); in gst_mpp_enc_loop()
928 GST_MPP_ENC_BROADCAST (encoder); in gst_mpp_enc_loop()
939 gst_mpp_enc_force_keyframe (encoder, TRUE); in gst_mpp_enc_loop()
942 GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder); in gst_mpp_enc_loop()
945 GST_VIDEO_ENCODER_STREAM_LOCK (encoder); in gst_mpp_enc_loop()
948 gst_mpp_enc_force_keyframe (encoder, FALSE); in gst_mpp_enc_loop()
974 buffer = gst_video_encoder_allocate_output_buffer (encoder, pkt_size); in gst_mpp_enc_loop()
990 gst_video_encoder_finish_frame (encoder, frame); in gst_mpp_enc_loop()
1000 gst_pad_pause_task (encoder->srcpad); in gst_mpp_enc_loop()
1003 GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder); in gst_mpp_enc_loop()
1015 gst_video_encoder_finish_frame (encoder, frame); in gst_mpp_enc_loop()
1020 gst_mpp_enc_handle_frame (GstVideoEncoder * encoder, GstVideoCodecFrame * frame) in gst_mpp_enc_handle_frame() argument
1022 GstMppEnc *self = GST_MPP_ENC (encoder); in gst_mpp_enc_handle_frame()
1028 GST_MPP_ENC_LOCK (encoder); in gst_mpp_enc_handle_frame()
1033 if (G_UNLIKELY (!GST_MPP_ENC_TASK_STARTED (encoder))) { in gst_mpp_enc_handle_frame()
1036 gst_pad_start_task (encoder->srcpad, in gst_mpp_enc_handle_frame()
1037 (GstTaskFunction) gst_mpp_enc_loop, encoder, NULL); in gst_mpp_enc_handle_frame()
1040 GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder); in gst_mpp_enc_handle_frame()
1041 buffer = gst_mpp_enc_convert (encoder, frame); in gst_mpp_enc_handle_frame()
1042 GST_VIDEO_ENCODER_STREAM_LOCK (encoder); in gst_mpp_enc_handle_frame()
1050 GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder); in gst_mpp_enc_handle_frame()
1051 GST_MPP_ENC_WAIT (encoder, self->pending_frames < MPP_PENDING_MAX in gst_mpp_enc_handle_frame()
1053 GST_VIDEO_ENCODER_STREAM_LOCK (encoder); in gst_mpp_enc_handle_frame()
1057 GST_MPP_ENC_BROADCAST (encoder); in gst_mpp_enc_handle_frame()
1061 GST_MPP_ENC_UNLOCK (encoder); in gst_mpp_enc_handle_frame()
1075 gst_video_encoder_finish_frame (encoder, frame); in gst_mpp_enc_handle_frame()
1077 GST_MPP_ENC_UNLOCK (encoder); in gst_mpp_enc_handle_frame()
1085 GstVideoEncoder *encoder = GST_VIDEO_ENCODER (element); in gst_mpp_enc_change_state() local
1088 GST_VIDEO_ENCODER_STREAM_LOCK (encoder); in gst_mpp_enc_change_state()
1089 gst_mpp_enc_reset (encoder, FALSE, TRUE); in gst_mpp_enc_change_state()
1090 GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder); in gst_mpp_enc_change_state()
1197 GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "mppenc", 0, "MPP encoder"); in gst_mpp_enc_class_init()