-gint
-gst_va_encode_picture_get_coded_size (GstVaEncodePicture * pic)
-{
- VADisplay dpy;
- VACodedBufferSegment *segment_list;
- VACodedBufferSegment *segment;
- VAStatus status;
- gint size;
-
- g_return_val_if_fail (pic, -1);
- g_return_val_if_fail (pic->coded_buffer != VA_INVALID_ID, -1);
-
- dpy = gst_va_display_get_va_dpy (pic->display);
-
- status = vaMapBuffer (dpy, pic->coded_buffer, (gpointer *) & segment_list);
- if (status != VA_STATUS_SUCCESS) {
- GST_WARNING ("coded buffer vaMapBuffer: %s", vaErrorStr (status));
- return -1;
- }
-
- if (!segment_list) {
- GST_WARNING ("coded buffer has no segment list");
- return -1;
- }
-
- size = 0;
- for (segment = segment_list; segment != NULL; segment = segment->next)
- size += segment->size;
-
- status = vaUnmapBuffer (dpy, pic->coded_buffer);
- if (status != VA_STATUS_SUCCESS) {
- GST_WARNING ("coded buffer vaUnmapBuffer: %s", vaErrorStr (status));
- return -1;
- }
-
- return size;
-}
-
-gboolean
-gst_va_encode_picture_copy_coded_data (GstVaEncodePicture * pic,
- GstBuffer * dest)
-{
- VADisplay dpy;
- VACodedBufferSegment *segment_list;
- VACodedBufferSegment *segment;
- VAStatus status;
- goffset offset;
- gsize size;
-
- g_return_val_if_fail (pic, FALSE);
- g_return_val_if_fail (dest && GST_IS_BUFFER (dest), FALSE);
- g_return_val_if_fail (pic->coded_buffer != VA_INVALID_ID, FALSE);
-
- dpy = gst_va_display_get_va_dpy (pic->display);
-
- status = vaMapBuffer (dpy, pic->coded_buffer, (gpointer *) & segment_list);
- if (status != VA_STATUS_SUCCESS) {
- GST_WARNING ("coded buffer vaMapBuffer: %s", vaErrorStr (status));
- return FALSE;
- }
-
- if (!segment_list) {
- GST_WARNING ("coded buffer has no segment list");
- return FALSE;
- }
-
- offset = 0;
- for (segment = segment_list; segment != NULL; segment = segment->next) {
- size = gst_buffer_fill (dest, offset, segment->buf, segment->size);
- if (size != segment->size) {
- GST_WARNING ("Segment size is %d, but copied %" G_GSIZE_FORMAT,
- segment->size, size);
- break;
- }
- offset += segment->size;
- }
-
- status = vaUnmapBuffer (dpy, pic->coded_buffer);
- if (status != VA_STATUS_SUCCESS)
- GST_WARNING ("coded buffer vaUnmapBuffer: %s", vaErrorStr (status));
-
- return TRUE;
-}
-