static gboolean gst_libde265_dec_reset (VIDEO_DECODER_BASE * parse) #endif { GstLibde265Dec *dec = GST_LIBDE265_DEC (parse); de265_reset(dec->ctx); dec->buffer_full = 0; return TRUE; }
static gboolean gst_libde265_dec_flush (GstVideoDecoder * decoder) { GstLibde265Dec *dec = GST_LIBDE265_DEC (decoder); de265_reset (dec->ctx); dec->buffer_full = 0; if (dec->codec_data != NULL && dec->format == GST_TYPE_LIBDE265_FORMAT_BYTESTREAM) { int more; de265_error err = de265_push_data (dec->ctx, dec->codec_data, dec->codec_data_size, 0, NULL); if (!de265_isOK (err)) { GST_ELEMENT_ERROR (decoder, STREAM, DECODE, ("Failed to push codec data: %s (code=%d)", de265_get_error_text (err), err), (NULL)); return FALSE; } de265_push_end_of_NAL (dec->ctx); do { err = de265_decode (dec->ctx, &more); switch (err) { case DE265_OK: break; case DE265_ERROR_IMAGE_BUFFER_FULL: case DE265_ERROR_WAITING_FOR_INPUT_DATA: /* not really an error */ more = 0; break; default: if (!de265_isOK (err)) { GST_ELEMENT_ERROR (decoder, STREAM, DECODE, ("Failed to decode codec data: %s (code=%d)", de265_get_error_text (err), err), (NULL)); return FALSE; } } } while (more); } return TRUE; }