[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:gst-droid.spec
^
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,7 +2,7 @@
<service name="tar_git">
<param name="url">https://github.com/sailfishos/gst-droid.git</param>
<param name="branch">master</param>
- <param name="revision">4bb59235ccf226353d4ae736c16397874a1377f3</param>
+ <param name="revision">3f0ffc0573d267841d7194a2badadb2a4d075c16</param>
<param name="token"/>
<param name="debian">N</param>
<param name="dumb">N</param>
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20181017.0.tar.gz/gst-libs/gst/droid/gstdroidmediabuffer.c
^
|
@@ -35,6 +35,7 @@
{
GstAllocator parent;
+ DroidMediaPixelFormatConstants c;
} GstDroidMediaBufferAllocator;
typedef struct
@@ -48,23 +49,9 @@
GstMemory mem;
DroidMediaBuffer *buffer;
- GstVideoInfo video_info;
- gpointer map_data;
- int map_count;
- GstMapFlags map_flags;
} GstDroidMediaBufferMemory;
-typedef struct
-{
- int hal_format;
- GstVideoFormat gst_format;
- int bytes_per_pixel;
- int h_align;
- int v_align;
-
-} GstDroidMediaBufferFormatMap;
-
#define _do_init \
GST_DEBUG_CATEGORY_INIT (droid_memory_debug, "droidmemory", 0, \
"droid memory allocator");
@@ -78,133 +65,6 @@
static void gst_droid_media_buffer_allocator_free (GstAllocator * allocator,
GstMemory * mem);
-static gpointer gst_droid_media_buffer_memory_map (GstMemory * mem,
- gsize maxsize, GstMapFlags flags);
-static void gst_droid_media_buffer_memory_unmap (GstMemory * mem);
-
-#define GST_DROID_MEDIA_BUFFER_FORMAT_COUNT 11
-
-static GstDroidMediaBufferFormatMap
- gst_droid_media_buffer_formats[GST_DROID_MEDIA_BUFFER_FORMAT_COUNT];
-
-static void
-gst_droid_media_buffer_initialize_format_map ()
-{
- DroidMediaPixelFormatConstants constants;
- static gboolean initialized = FALSE;
-
- if (!initialized) {
- droid_media_pixel_format_constants_init (&constants);
-
- gst_droid_media_buffer_formats[0].hal_format =
- constants.HAL_PIXEL_FORMAT_RGBA_8888;
- gst_droid_media_buffer_formats[0].gst_format = GST_VIDEO_FORMAT_RGBA;
- gst_droid_media_buffer_formats[0].bytes_per_pixel = 4;
- gst_droid_media_buffer_formats[0].h_align = 4;
- gst_droid_media_buffer_formats[0].v_align = 1;
-
- gst_droid_media_buffer_formats[1].hal_format =
- constants.HAL_PIXEL_FORMAT_RGBX_8888;
- gst_droid_media_buffer_formats[1].gst_format = GST_VIDEO_FORMAT_RGBx;
- gst_droid_media_buffer_formats[1].bytes_per_pixel = 4;
- gst_droid_media_buffer_formats[1].h_align = 4;
- gst_droid_media_buffer_formats[1].v_align = 1;
-
- gst_droid_media_buffer_formats[2].hal_format =
- constants.HAL_PIXEL_FORMAT_RGB_888;
- gst_droid_media_buffer_formats[2].gst_format = GST_VIDEO_FORMAT_RGB;
- gst_droid_media_buffer_formats[2].bytes_per_pixel = 3;
- gst_droid_media_buffer_formats[2].h_align = 4;
- gst_droid_media_buffer_formats[2].v_align = 1;
-
- gst_droid_media_buffer_formats[3].hal_format =
- constants.HAL_PIXEL_FORMAT_RGB_565;
- gst_droid_media_buffer_formats[3].gst_format = GST_VIDEO_FORMAT_RGB16;
- gst_droid_media_buffer_formats[3].bytes_per_pixel = 2;
- gst_droid_media_buffer_formats[3].h_align = 4;
- gst_droid_media_buffer_formats[3].v_align = 1;
-
- gst_droid_media_buffer_formats[4].hal_format =
- constants.HAL_PIXEL_FORMAT_BGRA_8888;
- gst_droid_media_buffer_formats[4].gst_format = GST_VIDEO_FORMAT_BGRA;
- gst_droid_media_buffer_formats[4].bytes_per_pixel = 4;
- gst_droid_media_buffer_formats[4].h_align = 4;
- gst_droid_media_buffer_formats[4].v_align = 1;
-
- gst_droid_media_buffer_formats[5].hal_format =
- constants.HAL_PIXEL_FORMAT_YV12;
- gst_droid_media_buffer_formats[5].gst_format = GST_VIDEO_FORMAT_YV12;
- gst_droid_media_buffer_formats[5].bytes_per_pixel = 1;
- gst_droid_media_buffer_formats[5].h_align = 1;
- gst_droid_media_buffer_formats[5].v_align = 1;
-
- gst_droid_media_buffer_formats[6].hal_format =
- constants.HAL_PIXEL_FORMAT_YCbCr_422_SP;
- gst_droid_media_buffer_formats[6].gst_format = GST_VIDEO_FORMAT_NV16;
- gst_droid_media_buffer_formats[6].bytes_per_pixel = 1;
- gst_droid_media_buffer_formats[6].h_align = 1;
- gst_droid_media_buffer_formats[6].v_align = 1;
-
- gst_droid_media_buffer_formats[7].hal_format =
- constants.HAL_PIXEL_FORMAT_YCrCb_420_SP;
- gst_droid_media_buffer_formats[7].gst_format = GST_VIDEO_FORMAT_NV21;
- gst_droid_media_buffer_formats[7].bytes_per_pixel = 1;
- gst_droid_media_buffer_formats[7].h_align = 1;
- gst_droid_media_buffer_formats[7].v_align = 1;
-
- gst_droid_media_buffer_formats[8].hal_format =
- constants.HAL_PIXEL_FORMAT_YCbCr_422_I;
- gst_droid_media_buffer_formats[8].gst_format = GST_VIDEO_FORMAT_YUY2;
- gst_droid_media_buffer_formats[8].bytes_per_pixel = 1;
- gst_droid_media_buffer_formats[8].h_align = 1;
- gst_droid_media_buffer_formats[8].v_align = 1;
-
- gst_droid_media_buffer_formats[9].hal_format =
- constants.QOMX_COLOR_FormatYUV420PackedSemiPlanar32m;
- gst_droid_media_buffer_formats[9].gst_format = GST_VIDEO_FORMAT_YV12;
- gst_droid_media_buffer_formats[9].bytes_per_pixel = 1;
- gst_droid_media_buffer_formats[9].h_align = 128;
- gst_droid_media_buffer_formats[9].v_align = 32;
-
- gst_droid_media_buffer_formats[10].hal_format =
- constants.QOMX_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka;
- gst_droid_media_buffer_formats[10].gst_format = GST_VIDEO_FORMAT_NV12_64Z32;
- gst_droid_media_buffer_formats[10].bytes_per_pixel = 0;
- gst_droid_media_buffer_formats[10].h_align = 0;
- gst_droid_media_buffer_formats[10].v_align = 0;
- }
-}
-
-static int
-gst_droid_media_buffer_index_of_hal_format (int format)
-{
- int i;
-
- gst_droid_media_buffer_initialize_format_map ();
-
- for (i = 0; i < GST_DROID_MEDIA_BUFFER_FORMAT_COUNT; ++i) {
- if (gst_droid_media_buffer_formats[i].hal_format == format) {
- return i;
- }
- }
- return GST_DROID_MEDIA_BUFFER_FORMAT_COUNT;
-}
-
-static int
-gst_droid_media_buffer_index_of_gst_format (GstVideoFormat format)
-{
- int i;
-
- gst_droid_media_buffer_initialize_format_map ();
-
- for (i = 0; i < GST_DROID_MEDIA_BUFFER_FORMAT_COUNT; ++i) {
- if (gst_droid_media_buffer_formats[i].gst_format == format) {
- return i;
- }
- }
- return GST_DROID_MEDIA_BUFFER_FORMAT_COUNT;
-}
-
GstAllocator *
gst_droid_media_buffer_allocator_new (void)
{
@@ -220,17 +80,17 @@
alloc->mem_type = GST_ALLOCATOR_DROID_MEDIA_BUFFER;
- alloc->mem_map = gst_droid_media_buffer_memory_map;
- alloc->mem_unmap = gst_droid_media_buffer_memory_unmap;
+ alloc->mem_map = NULL;
+ alloc->mem_unmap = NULL;
alloc->mem_copy = NULL;
alloc->mem_share = NULL;
alloc->mem_is_span = NULL;
+ droid_media_pixel_format_constants_init (&allocator->c);
+
GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC);
}
-#define ALIGN_SIZE(size, to) (((size) + to - 1) & ~(to - 1))
-
static void
droid_media_buffer_allocator_class_init (GstDroidMediaBufferAllocatorClass *
klass)
@@ -241,56 +101,13 @@
allocator_class->free = gst_droid_media_buffer_allocator_free;
}
-static GstDroidMediaBufferMemory *
-gst_droid_media_buffer_allocator_alloc_from_buffer (GstAllocator * allocator,
- DroidMediaBuffer * buffer, int format_index, gsize width, gsize height,
- gsize stride)
-{
- GstDroidMediaBufferMemory *mem = g_slice_new0 (GstDroidMediaBufferMemory);
- GstFormat format;
- gsize padded_width = width;
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20181017.0.tar.gz/gst-libs/gst/droid/gstdroidmediabuffer.h
^
|
@@ -29,8 +29,6 @@
#define GST_ALLOCATOR_DROID_MEDIA_BUFFER "droidmediabuffer"
#define GST_CAPS_FEATURE_MEMORY_DROID_MEDIA_BUFFER "memory:DroidMediaBuffer"
-#define GST_DROID_MEDIA_BUFFER_MEMORY_VIDEO_FORMATS "{ NV12_64Z32, YV12, NV16, " \
- "NV12, NV21, YUY2, RGBA, RGBx, RGB, RGB16, BGRA, ENCODED }"
GstAllocator * gst_droid_media_buffer_allocator_new (void);
GstMemory * gst_droid_media_buffer_allocator_alloc (GstAllocator * allocator,
@@ -44,8 +42,6 @@
DroidMediaBuffer * gst_droid_media_buffer_memory_get_buffer (GstMemory * mem);
gboolean gst_is_droid_media_buffer_memory (GstMemory * mem);
-GstVideoInfo * gst_droid_media_buffer_get_video_info (GstMemory * mem);
-
G_END_DECLS
#endif /* __GST_DROID_MEDIA_BUFFER_H__ */
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20181017.0.tar.gz/gst/droidcamsrc/gstdroidcamsrc.c
^
|
@@ -52,8 +52,7 @@
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
- (GST_CAPS_FEATURE_MEMORY_DROID_MEDIA_BUFFER,
- GST_DROID_MEDIA_BUFFER_MEMORY_VIDEO_FORMATS) ";"
+ (GST_CAPS_FEATURE_MEMORY_DROID_MEDIA_BUFFER, "{YV12}") ";"
GST_VIDEO_CAPS_MAKE ("{NV21}")));
static GstStaticPadTemplate img_src_template_factory =
@@ -1425,9 +1424,7 @@
g_rec_mutex_lock (&src->dev_lock);
if (src->dev && src->dev->params) {
if (data == src->vfsrc) {
- caps =
- gst_droidcamsrc_params_get_viewfinder_caps (src->dev->params,
- src->dev->viewfinder_format);
+ caps = gst_droidcamsrc_params_get_viewfinder_caps (src->dev->params);
} else if (data == src->imgsrc) {
caps = gst_droidcamsrc_params_get_image_caps (src->dev->params);
} else if (data == src->vidsrc) {
@@ -1496,7 +1493,6 @@
gboolean ret = FALSE;
GstCaps *peer = NULL;
GstCaps *our_caps = NULL;
- GstCapsFeatures *features;
gchar *preview;
GstVideoInfo info;
@@ -1504,9 +1500,7 @@
GST_DEBUG_OBJECT (src, "vfsrc negotiate");
- our_caps =
- gst_droidcamsrc_params_get_viewfinder_caps (src->dev->params,
- src->dev->viewfinder_format);
+ our_caps = gst_droidcamsrc_params_get_viewfinder_caps (src->dev->params);
GST_DEBUG_OBJECT (src, "our caps %" GST_PTR_FORMAT, our_caps);
if (!our_caps || gst_caps_is_empty (our_caps)) {
@@ -1565,12 +1559,8 @@
gst_droidcamsrc_params_set_string (src->dev->params, "preview-size", preview);
g_free (preview);
- features = gst_caps_get_features (our_caps, 0);
-
g_rec_mutex_lock (&src->dev_lock);
- src->dev->use_raw_data =
- !gst_caps_features_contains (features,
- GST_CAPS_FEATURE_MEMORY_DROID_MEDIA_BUFFER);
+ src->dev->use_raw_data = info.finfo->format == GST_VIDEO_FORMAT_NV21;
g_rec_mutex_unlock (&src->dev_lock);
ret = TRUE;
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20181017.0.tar.gz/gst/droidcamsrc/gstdroidcamsrcdev.c
^
|
@@ -73,7 +73,7 @@
void gst_droidcamsrc_dev_update_params_locked (GstDroidCamSrcDev * dev);
static void
gst_droidcamsrc_dev_prepare_buffer (GstDroidCamSrcDev * dev, GstBuffer * buffer,
- DroidMediaRect rect, GstVideoInfo * video_info);
+ DroidMediaRect rect, int width, int height, GstVideoFormat format);
static gboolean
gst_droidcamsrc_dev_start_video_recording_recorder_locked (GstDroidCamSrcDev *
dev);
@@ -273,7 +273,6 @@
GstDroidCamSrcDev *dev = (GstDroidCamSrcDev *) user;
GstDroidCamSrc *src = GST_DROIDCAMSRC (GST_PAD_PARENT (dev->imgsrc->pad));
GstDroidCamSrcPad *pad = dev->vfsrc;
- GstVideoInfo video_info;
GstBuffer *buffer;
gsize width, height;
DroidMediaRect rect;
@@ -299,9 +298,8 @@
rect = src->crop_rect;
GST_OBJECT_UNLOCK (src);
- gst_video_info_set_format (&video_info, GST_VIDEO_FORMAT_NV21, width, height);
-
- gst_droidcamsrc_dev_prepare_buffer (dev, buffer, rect, &video_info);
+ gst_droidcamsrc_dev_prepare_buffer (dev, buffer, rect, width, height,
+ GST_VIDEO_FORMAT_NV21);
g_mutex_lock (&pad->lock);
g_queue_push_tail (pad->queue, buffer);
@@ -435,6 +433,7 @@
DroidMediaBuffer *buffer;
GstMemory *mem;
DroidMediaRect rect;
+ guint width, height;
GstBuffer *buff;
DroidMediaBufferCallbacks cb;
GstFlowReturn flow_ret;
@@ -483,9 +482,11 @@
gst_droidcamsrc_timestamp (src, buff);
rect = droid_media_buffer_get_crop_rect (buffer);
+ width = droid_media_buffer_get_width (buffer);
+ height = droid_media_buffer_get_height (buffer);
- gst_droidcamsrc_dev_prepare_buffer (dev, buff, rect,
- gst_droid_media_buffer_get_video_info (mem));
+ gst_droidcamsrc_dev_prepare_buffer (dev, buff, rect, width, height,
+ GST_VIDEO_FORMAT_YV12);
g_mutex_lock (&pad->lock);
g_queue_push_tail (pad->queue, buff);
@@ -540,8 +541,6 @@
droid_media_camera_constants_init (&dev->c);
- dev->viewfinder_format = GST_VIDEO_FORMAT_UNKNOWN;
-
return dev;
}
@@ -549,10 +548,6 @@
gst_droidcamsrc_dev_open (GstDroidCamSrcDev * dev, GstDroidCamSrcCamInfo * info)
{
GstDroidCamSrc *src;
- DroidMediaColourFormatConstants constants;
- int hal_format;
-
- droid_media_colour_format_constants_init (&constants);
g_rec_mutex_lock (dev->lock);
@@ -563,23 +558,6 @@
dev->info = info;
dev->cam = droid_media_camera_connect (dev->info->num);
- hal_format = droid_media_camera_get_video_color_format (dev->cam);
-
- if (hal_format == constants.OMX_COLOR_FormatYUV420Planar) {
- dev->viewfinder_format = GST_VIDEO_FORMAT_YV12;
- } else if (hal_format == constants.OMX_COLOR_FormatYUV422SemiPlanar) {
- dev->viewfinder_format = GST_VIDEO_FORMAT_NV16;
- } else if (hal_format == constants.OMX_COLOR_FormatYUV420SemiPlanar) {
- dev->viewfinder_format = GST_VIDEO_FORMAT_NV21;
- } else if (hal_format == constants.OMX_COLOR_FormatYCbYCr) {
- dev->viewfinder_format = GST_VIDEO_FORMAT_YUY2;
- } else if (hal_format == constants.OMX_COLOR_Format16bitRGB565) {
- dev->viewfinder_format = GST_VIDEO_FORMAT_RGB16;
- } else {
- GST_WARNING_OBJECT (src, "Unknown HAL color format 0x%x", hal_format);
- dev->viewfinder_format = GST_VIDEO_FORMAT_ENCODED;
- }
-
if (!dev->cam) {
g_rec_mutex_unlock (dev->lock);
@@ -1137,7 +1115,7 @@
static void
gst_droidcamsrc_dev_prepare_buffer (GstDroidCamSrcDev * dev, GstBuffer * buffer,
- DroidMediaRect rect, GstVideoInfo * video_info)
+ DroidMediaRect rect, int width, int height, GstVideoFormat format)
{
GstDroidCamSrc *src = GST_DROIDCAMSRC (GST_PAD_PARENT (dev->imgsrc->pad));
GstVideoCropMeta *crop;
@@ -1155,13 +1133,11 @@
gst_buffer_add_gst_buffer_orientation_meta (buffer,
dev->info->orientation, dev->info->direction);
- gst_buffer_add_video_meta_full (buffer, GST_VIDEO_FRAME_FLAG_NONE,
- video_info->finfo->format, video_info->width, video_info->height,
- video_info->finfo->n_planes, video_info->offset, video_info->stride);
+ gst_buffer_add_video_meta (buffer, GST_VIDEO_FRAME_FLAG_NONE,
+ format, width, height);
GST_LOG_OBJECT (src, "preview info: w=%d, h=%d, crop: x=%d, y=%d, w=%d, h=%d",
- video_info->width, video_info->height, crop->x, crop->y, crop->width,
- crop->height);
+ width, height, crop->x, crop->y, crop->width, crop->height);
}
static gboolean
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20181017.0.tar.gz/gst/droidcamsrc/gstdroidcamsrcdev.h
^
|
@@ -54,7 +54,6 @@
GstDroidCamSrcVideoCaptureState *vid;
GstBufferPool *pool;
DroidMediaCameraConstants c;
- GstVideoFormat viewfinder_format;
gboolean use_recorder;
GstDroidCamSrcRecorder *recorder;
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20181017.0.tar.gz/gst/droidcamsrc/gstdroidcamsrcparams.c
^
|
@@ -375,8 +375,7 @@
}
GstCaps *
-gst_droidcamsrc_params_get_viewfinder_caps (GstDroidCamSrcParams * params,
- GstVideoFormat format)
+gst_droidcamsrc_params_get_viewfinder_caps (GstDroidCamSrcParams * params)
{
GstCaps *caps;
@@ -384,8 +383,7 @@
caps =
gst_caps_merge (gst_droidcamsrc_params_get_caps_locked (params,
"preview-size-values", "video/x-raw",
- GST_CAPS_FEATURE_MEMORY_DROID_MEDIA_BUFFER,
- gst_video_format_to_string (format)),
+ GST_CAPS_FEATURE_MEMORY_DROID_MEDIA_BUFFER, "YV12"),
gst_droidcamsrc_params_get_caps_locked (params, "preview-size-values",
"video/x-raw", NULL, "NV21"));
g_mutex_unlock (¶ms->lock);
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20181017.0.tar.gz/gst/droidcamsrc/gstdroidcamsrcparams.h
^
|
@@ -22,7 +22,6 @@
#define __GST_DROIDCAMSRC_PARAMS_H__
#include <gst/gst.h>
-#include <gst/video/video.h>
G_BEGIN_DECLS
@@ -45,7 +44,7 @@
gchar *gst_droidcamsrc_params_to_string (GstDroidCamSrcParams *params);
gboolean gst_droidcamsrc_params_is_dirty (GstDroidCamSrcParams *params);
-GstCaps *gst_droidcamsrc_params_get_viewfinder_caps (GstDroidCamSrcParams *params, GstVideoFormat format);
+GstCaps *gst_droidcamsrc_params_get_viewfinder_caps (GstDroidCamSrcParams *params);
GstCaps *gst_droidcamsrc_params_get_video_caps (GstDroidCamSrcParams *params);
GstCaps *gst_droidcamsrc_params_get_image_caps (GstDroidCamSrcParams *params);
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20181017.0.tar.gz/gst/droidcamsrc/gstdroidcamsrcphotography.c
^
|
@@ -159,6 +159,7 @@
{GST_PHOTOGRAPHY_SCENE_MODE_PARTY, "party"},
{GST_PHOTOGRAPHY_SCENE_MODE_CANDLELIGHT, "candlelight"},
{GST_PHOTOGRAPHY_SCENE_MODE_BARCODE, "barcode"},
+ {GST_PHOTOGRAPHY_SCENE_MODE_ASD, "asd"},
{GST_PHOTOGRAPHY_SCENE_MODE_BACKLIGHT, "backlight"},
{GST_PHOTOGRAPHY_SCENE_MODE_FLOWERS, "flowers"},
{GST_PHOTOGRAPHY_SCENE_MODE_AR, "AR"},
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20181017.0.tar.gz/gst/droidcodec/gstdroidvdec.c
^
|
@@ -45,24 +45,12 @@
GST_DEBUG_CATEGORY_EXTERN (gst_droid_vdec_debug);
#define GST_CAT_DEFAULT gst_droid_vdec_debug
-typedef struct
-{
- int *hal_format;
- GstVideoFormat gst_format;
- GstDroidVideoConvertToI420 convert_to_i420;
- gsize bytes_per_pixel;
- gsize h_align;
- gsize v_align;
-
-} GstDroidVideoFormatMap;
-
static GstStaticPadTemplate gst_droidvdec_src_template_factory =
GST_STATIC_PAD_TEMPLATE (GST_VIDEO_DECODER_SRC_NAME,
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
- (GST_CAPS_FEATURE_MEMORY_DROID_MEDIA_BUFFER,
- GST_DROID_MEDIA_BUFFER_MEMORY_VIDEO_FORMATS) ";"
+ (GST_CAPS_FEATURE_MEMORY_DROID_MEDIA_BUFFER, "{YV12}") ";"
GST_VIDEO_CAPS_MAKE ("I420")));
static gboolean gst_droidvdec_configure_state (GstVideoDecoder * decoder,
@@ -101,179 +89,6 @@
gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (GST_VIDEO_DECODER (dec)));
}
-
-static void
-gst_droidvec_copy_plane (guint8 * out, gint stride_out, guint8 * in,
- gint stride_in, gint width, gint height)
-{
- int i;
- for (i = 0; i < height; i++) {
- orc_memcpy (out, in, width);
- out += stride_out;
- in += stride_in;
- }
-}
-
-static void
-gst_droidvec_copy_packed_planes (guint8 * out0, guint8 * out1, gint stride_out,
- guint8 * in, gint stride_in, gint width, gint height)
-{
- int x, y;
- for (y = 0; y < height; y++) {
- guint8 *row = in;
- for (x = 0; x < width; x++) {
- out0[x] = row[0];
- out1[x] = row[1];
- row += 2;
- }
-
- out0 += stride_out;
- out1 += stride_out;
- in += stride_in;
- }
-}
-
-#define ALIGN_SIZE(size, to) (((size) + to - 1) & ~(to - 1))
-
-static gboolean
-gst_droidvdec_convert_native_to_i420 (GstDroidVDec * dec, GstMapInfo * out,
- DroidMediaData * in, GstVideoInfo * info, gsize width, gsize height)
-{
- gsize size = width * height * 3 / 2;
- gboolean use_external_buffer = out->size != size;
- guint8 *data = NULL;
- gboolean ret = TRUE;
-
- if (use_external_buffer) {
- GST_DEBUG_OBJECT (dec, "using an external buffer for I420 conversion.");
- data = g_malloc (size);
- } else {
- data = out->data;
- }
-
- if (droid_media_convert_to_i420 (dec->convert, in, data) != true) {
- GST_ELEMENT_ERROR (dec, LIBRARY, FAILED, (NULL),
- ("failed to convert frame"));
-
- ret = FALSE;
- } else if (use_external_buffer) {
- /* fix up the buffer */
- /* Code is based on gst-colorconv qcom backend */
-
- gint stride = GST_VIDEO_INFO_COMP_STRIDE (info, 0);
- gint strideUV = GST_VIDEO_INFO_COMP_STRIDE (info, 1);
- guint8 *p = data;
- guint8 *dst = out->data;
- int i;
- int x;
-
- /* Y */
- for (i = 0; i < info->height; i++) {
- orc_memcpy (dst, p, info->width);
- dst += stride;
- p += width;
- }
-
- /* NOP if height == info->height */
- p += (height - info->height) * width;
- /* U and V */
- for (x = 0; x < 2; x++) {
- for (i = 0; i < info->height / 2; i++) {
- orc_memcpy (dst, p, info->width / 2);
- dst += strideUV;
- p += width / 2;
- }
-
- /* NOP if height == info->height */
- p += (height - info->height) / 2 * width / 2;
- }
- }
-
- if (use_external_buffer && data) {
- g_free (data);
- }
-
- return ret;
-}
-
-static gboolean
-gst_droidvdec_convert_yuv420_planar_to_i420 (GstDroidVDec * dec,
- GstMapInfo * out, DroidMediaData * in, GstVideoInfo * info, gsize width,
- gsize height)
-{
- /* Buffer is already I420, so we can copy it straight over */
- /* though we need to handle the cropping */
-
- GST_DEBUG_OBJECT (dec, "Copying I420 buffer");
- gint top = dec->crop_rect.top;
- gint left = dec->crop_rect.left;
- gint crop_width = dec->crop_rect.right - left;
- gint crop_height = dec->crop_rect.bottom - top;
-
- guint8 *y = in->data + (top * width) + left;
- guint8 *u = in->data + (width * height) + (top * width / 2) + (left / 2);
- guint8 *v =
- in->data + (width * height) + (width * height / 4) +
- (top * width / 2) + (left / 2);
-
- gst_droidvec_copy_plane (out->data + info->offset[0],
- info->stride[0], y, width, crop_width, crop_height);
- gst_droidvec_copy_plane (out->data + info->offset[1],
- info->stride[1], u, width / 2, crop_width / 2, crop_height / 2);
- gst_droidvec_copy_plane (out->data + info->offset[2],
- info->stride[2], v, width / 2, crop_width / 2, crop_height / 2);
-
- return TRUE;
-}
-
-static gboolean
-gst_droidvdec_convert_yuv420_semi_planar_to_i420 (GstDroidVDec * dec,
- GstMapInfo * out, DroidMediaData * in, GstVideoInfo * info, gsize width,
- gsize height)
-{
- GST_DEBUG_OBJECT (dec, "Converting from OMX_COLOR_FormatYUV420SemiPlanar");
- gint stride = width;
- gint slice_height = ALIGN_SIZE (height, 16);
- gint top = dec->crop_rect.top;
- gint left = dec->crop_rect.left;
-
- guint8 *y = in->data + (top * stride) + left;
- guint8 *uv = in->data + (stride * slice_height) + (top * stride / 2) + left;
-
- gst_droidvec_copy_plane (out->data + info->offset[0],
- info->stride[0], y, stride, info->width, info->height);
- gst_droidvec_copy_packed_planes (out->data + info->offset[1],
- out->data + info->offset[2], info->stride[1], uv, stride,
- info->width / 2, info->height / 2);
-
- return TRUE;
-}
-
-static gboolean
-gst_droidvdec_convert_yuv420_packed_semi_planar_to_i420 (GstDroidVDec * dec,
- GstMapInfo * out, DroidMediaData * in, GstVideoInfo * info, gsize width,
- gsize height)
-{
- /* copy to the output buffer swapping the u and v planes and cropping if necessary */
- /* NV12 format with 128 byte alignment */
- GST_DEBUG_OBJECT (dec, "Converting from qcom NV12 semi planar");
- gint stride = ALIGN_SIZE (width, 128);
- gint slice_height = ALIGN_SIZE (height, 32);
- gint top = ALIGN_SIZE (dec->crop_rect.top, 2);
- gint left = ALIGN_SIZE (dec->crop_rect.left, 2);
-
- guint8 *y = in->data + (top * stride) + left;
- guint8 *uv = in->data + (stride * slice_height) + (top * stride / 2) + left;
-
- gst_droidvec_copy_plane (out->data + info->offset[0],
- info->stride[0], y, stride, info->width, info->height);
- gst_droidvec_copy_packed_planes (out->data + info->offset[1],
- out->data + info->offset[2], info->stride[1], uv, stride,
- info->width / 2, info->height / 2);
-
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20181017.0.tar.gz/gst/droidcodec/gstdroidvdec.h
^
|
@@ -44,10 +44,6 @@
typedef struct _GstDroidVDecClass GstDroidVDecClass;
typedef enum _GstDroidVDecState GstDroidVDecState;
-typedef gboolean (*GstDroidVideoConvertToI420) (GstDroidVDec * dec,
- GstMapInfo * out, DroidMediaData * in, GstVideoInfo * info, gsize width,
- gsize height);
-
enum _GstDroidVDecState
{
GST_DROID_VDEC_STATE_OK,
@@ -77,19 +73,14 @@
gboolean dirty;
DroidMediaRect crop_rect;
gboolean running;
- gboolean use_hardware_buffers;
GstVideoFormat format;
gsize codec_reported_height;
gsize codec_reported_width;
- gsize bytes_per_pixel;
- gsize v_align;
- gsize h_align;
GstVideoCodecState *in_state;
GstVideoCodecState *out_state;
DroidMediaConvert *convert;
- GstDroidVideoConvertToI420 convert_to_i420;
gint32 hal_format;
};
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20181017.0.tar.gz/gst/droideglsink/gstdroideglsink.c
^
|
@@ -43,10 +43,9 @@
GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
- (GST_CAPS_FEATURE_MEMORY_DROID_MEDIA_BUFFER,
- GST_DROID_MEDIA_BUFFER_MEMORY_VIDEO_FORMATS) "; "
- GST_VIDEO_CAPS_MAKE ("{YV12, NV21}")));
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{YV12, NV21}") "; "
+ GST_VIDEO_CAPS_MAKE_WITH_FEATURES
+ (GST_CAPS_FEATURE_MEMORY_DROID_MEDIA_BUFFER, "{YV12}")));
enum
{
|