[Mesa-dev] [PATCH 2/3] st/omx: add support for nouveau / interlaced
Liu, Leo
Leo.Liu at amd.com
Tue Jun 28 01:27:32 UTC 2016
Hi Julien and Christian,
I got a patch attached to fix the "fillout" problem, and please review.
But we still need to fix transcoding issue with interlaced as true. Our transcode support tunneling, basic the decode buffer will be used directly for encode.
Thanks,
Leo
________________________________
From: Julien Isorce <julien.isorce at gmail.com>
Sent: June 27, 2016 4:54:07 PM
To: Liu, Leo
Cc: ML mesa-dev; Gurkirpal Singh; Koenig, Christian
Subject: Re: [Mesa-dev] [PATCH 2/3] st/omx: add support for nouveau / interlaced
Hi Leo,
Sorry for the inconvenience, could you let me know how to reproduce the problem ?
I have been playing with some gst pipelines and they all work but I can only test with nouveau driver.
Cheers
Julien
On 27 June 2016 at 21:35, Leo Liu <leo.liu at amd.com<mailto:leo.liu at amd.com>> wrote:
This patch break omx decode to file, it got seg fault. Will take look further.
Regards,
Leo
On 06/27/2016 04:16 AM, Julien Isorce wrote:
Signed-off-by: Julien Isorce <j.isorce at samsung.com<mailto:j.isorce at samsung.com>>
---
src/gallium/state_trackers/omx/vid_dec.c | 51 ++++++++++++++++----------------
1 file changed, 26 insertions(+), 25 deletions(-)
diff --git a/src/gallium/state_trackers/omx/vid_dec.c b/src/gallium/state_trackers/omx/vid_dec.c
index 564ca2f..85ffb88 100644
--- a/src/gallium/state_trackers/omx/vid_dec.c
+++ b/src/gallium/state_trackers/omx/vid_dec.c
@@ -48,6 +48,7 @@
#include "pipe/p_video_codec.h"
#include "util/u_memory.h"
#include "util/u_surface.h"
+#include "vl/vl_video_buffer.h"
#include "vl/vl_vlc.h"
#include "entrypoint.h"
@@ -515,34 +516,34 @@ static void vid_dec_FillOutput(vid_dec_PrivateType *priv, struct pipe_video_buff
OMX_VIDEO_PORTDEFINITIONTYPE *def = &port->sPortParam.format.video;
struct pipe_sampler_view **views;
- struct pipe_transfer *transfer;
- struct pipe_box box = { };
- uint8_t *src, *dst;
+ unsigned i, j;
+ unsigned width, height;
views = buf->get_sampler_view_planes(buf);
- dst = output->pBuffer;
-
- box.width = def->nFrameWidth;
- box.height = def->nFrameHeight;
- box.depth = 1;
-
- src = priv->pipe->transfer_map(priv->pipe, views[0]->texture, 0,
- PIPE_TRANSFER_READ, &box, &transfer);
- util_copy_rect(dst, views[0]->texture->format, def->nStride, 0, 0,
- box.width, box.height, src, transfer->stride, 0, 0);
- pipe_transfer_unmap(priv->pipe, transfer);
-
- dst = ((uint8_t*)output->pBuffer) + (def->nStride * box.height);
-
- box.width = def->nFrameWidth / 2;
- box.height = def->nFrameHeight / 2;
-
- src = priv->pipe->transfer_map(priv->pipe, views[1]->texture, 0,
- PIPE_TRANSFER_READ, &box, &transfer);
- util_copy_rect(dst, views[1]->texture->format, def->nStride, 0, 0,
- box.width, box.height, src, transfer->stride, 0, 0);
- pipe_transfer_unmap(priv->pipe, transfer);
+ for (i = 0; i < 2 /* NV12 */; i++) {
+ if (!views[i]) continue;
+ width = buf->width;
+ height = buf->height;
+ vl_video_buffer_adjust_size(&width, &height, i, buf->interlaced, buf->chroma_format);
+ for (j = 0; j < views[i]->texture->array_size; ++j) {
+ struct pipe_box box = {0, 0, j, width, height, 1};
+ struct pipe_transfer *transfer;
+ uint8_t *map, *dst;
+ map = priv->pipe->transfer_map(priv->pipe, views[i]->texture, 0,
+ PIPE_TRANSFER_READ, &box, &transfer);
+ if (!map)
+ return;
+
+ dst = ((uint8_t*)output->pBuffer + output->nOffset) + j * def->nStride + i * buf->width * buf->height;
+ util_copy_rect(dst,
+ views[i]->texture->format,
+ def->nStride * views[i]->texture->array_size, 0, 0,
+ box.width, box.height, map, transfer->stride, 0, 0);
+
+ pipe_transfer_unmap(priv->pipe, transfer);
+ }
+ }
}
static void vid_dec_FrameDecoded(OMX_COMPONENTTYPE *comp, OMX_BUFFERHEADERTYPE* input,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160628/b5292740/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-st-omx-fix-decoder-fillout-for-the-OMX-result-buffer.patch
Type: text/x-patch
Size: 2067 bytes
Desc: 0001-st-omx-fix-decoder-fillout-for-the-OMX-result-buffer.patch
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160628/b5292740/attachment.bin>
More information about the mesa-dev
mailing list