[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:gst-droid.spec
^
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,6 +2,6 @@
<service name="tar_git">
<param name="url">https://github.com/sailfishos/gst-droid.git</param>
<param name="branch">master</param>
- <param name="revision">0aeb90829c4a26add975d53a8a4a228bf1cd4c59</param>
+ <param name="revision">a6ff1ba94af70125e979d3401d6e3e806a3792a4</param>
</service>
</services>
\ No newline at end of file
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.tar.gz/Makefile.am
^
|
@@ -1,8 +1,3 @@
SUBDIRS = common gst-libs gst tools
-EXTRA_DIST = autogen.sh \
- gstreamer-droid-1.0.pc.in \
- gstreamer-droid-1.0.pc
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = gstreamer-droid-1.0.pc
+EXTRA_DIST = autogen.sh
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.tar.gz/configure.ac
^
|
@@ -167,7 +167,6 @@
[GStreamer API Version])
AC_CONFIG_FILES([Makefile
- gstreamer-droid-1.0.pc
common/Makefile
common/m4/Makefile
gst-libs/Makefile
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.tar.gz/gst-libs/gst/droid/gstdroidcodec.c
^
|
@@ -31,7 +31,7 @@
#endif /* GST_USE_UNSTABLE_API */
#include <gst/codecparsers/gsth264parser.h>
-GST_DEBUG_CATEGORY (gst_droid_codec_debug);
+GST_DEBUG_CATEGORY_EXTERN (gst_droid_codec_debug);
#define GST_CAT_DEFAULT gst_droid_codec_debug
static GstBuffer *create_mpeg4venc_codec_data (DroidMediaData * data);
@@ -52,6 +52,7 @@
DroidMediaData * out);
static gboolean is_mpeg4v (GstDroidCodec * codec, const GstStructure * s);
static gboolean is_mpega (GstDroidCodec * codec, const GstStructure * s);
+static gboolean is_mp3 (GstDroidCodec * codec, const GstStructure * s);
static gboolean is_h264_dec (GstDroidCodec * codec, const GstStructure * s);
static gboolean is_h264_enc (GstDroidCodec * codec, const GstStructure * s);
static void h264enc_complement (GstCaps * caps);
@@ -108,6 +109,10 @@
is_mpega, NULL, NULL, NULL, create_aacdec_codec_data_from_codec_data,
create_aacdec_codec_data_from_frame_data, process_aacdec_data},
+ {GST_DROID_CODEC_DECODER_AUDIO, "audio/mpeg", "audio/mpeg",
+ "audio/mpeg, mpegversion=(int)1, layer=[1, 3]", TRUE,
+ is_mp3, NULL, NULL, NULL, NULL, NULL, NULL},
+
/* video decoders */
{GST_DROID_CODEC_DECODER_VIDEO, "video/mpeg", "video/mp4v-es",
"video/mpeg, mpegversion=4", TRUE,
@@ -124,7 +129,7 @@
NULL, NULL, NULL, NULL, NULL, NULL},
{GST_DROID_CODEC_DECODER_VIDEO, "video/x-vp8", "video/x-vnd.on2.vp8",
- "video/x-vp8", TRUE, NULL, NULL, NULL, NULL,
+ "video/x-vp8", FALSE, NULL, NULL, NULL, NULL,
create_vp8vdec_codec_data_from_codec_data, NULL, NULL},
/* audio encoders */
@@ -581,6 +586,15 @@
}
static gboolean
+is_mp3 (GstDroidCodec * codec G_GNUC_UNUSED, const GstStructure * s)
+{
+ gint val, layer;
+
+ return gst_structure_get_int (s, "mpegversion", &val) && val == 1 &&
+ gst_structure_get_int (s, "layer", &layer) && (layer == 1 || layer == 3);
+}
+
+static gboolean
is_h264_dec (GstDroidCodec * codec G_GNUC_UNUSED, const GstStructure * s)
{
const char *alignment = gst_structure_get_string (s, "alignment");
@@ -1072,7 +1086,6 @@
|| codec->info->type ==
GST_DROID_CODEC_DECODER_VIDEO) ? "decoder-quirks" : "encoder-quirks";
gsize quirks_length = 0;
- codec->quirks = 0;
int x;
g_key_file_load_from_file (file, path, G_KEY_FILE_NONE, NULL);
@@ -1096,8 +1109,6 @@
codec->quirks |= USE_CODEC_SUPPLIED_HEIGHT_VALUE;
} else if (!g_strcmp0 (quirks_string[x], USE_CODEC_SUPPLIED_WIDTH_NAME)) {
codec->quirks |= USE_CODEC_SUPPLIED_WIDTH_VALUE;
- } else if (!g_strcmp0 (quirks_string[x], DONT_USE_DROID_CONVERT_NAME)) {
- codec->quirks |= DONT_USE_DROID_CONVERT_VALUE;
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.tar.gz/gst-libs/gst/droid/gstdroidcodec.h
^
|
@@ -35,9 +35,6 @@
#define USE_CODEC_SUPPLIED_WIDTH_NAME "use-codec-supplied-width"
#define USE_CODEC_SUPPLIED_WIDTH_VALUE 0x2
-#define DONT_USE_DROID_CONVERT_NAME "dont-use-droid-convert"
-#define DONT_USE_DROID_CONVERT_VALUE 0x4
-
typedef struct _GstDroidCodec GstDroidCodec;
typedef struct _GstDroidCodecInfo GstDroidCodecInfo;
typedef struct _GstDroidCodecPrivate GstDroidCodecPrivate;
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.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.20170120.1.tar.gz/gst-libs/gst/droid/gstdroidmediabuffer.h
^
|
@@ -23,14 +23,12 @@
#include <gst/gst.h>
#include <gst/video/video.h>
-#include <droidmedia/droidmedia.h>
+#include "droidmedia.h"
G_BEGIN_DECLS
#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.20170120.1.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 =
@@ -184,7 +183,7 @@
src->fps_d = 1;
src->target_bitrate = DEFAULT_TARGET_BITRATE;
- gst_droidcamsrc_photography_init (src);
+ gst_droidcamsrc_photography_init (src, DEFAULT_CAMERA_DEVICE);
src->vfsrc = gst_droidcamsrc_create_pad (src,
GST_BASE_CAMERA_SRC_VIEWFINDER_PAD_NAME, FALSE);
@@ -326,8 +325,8 @@
} else {
src->camera_device = g_value_get_enum (value);
GST_INFO_OBJECT (src, "camera device set to %d", src->camera_device);
- /* initialize empty photo properties */
- gst_droidcamsrc_photography_init (src);
+ /* load our configuration file */
+ gst_droidcamsrc_photography_init (src, src->camera_device);
}
g_rec_mutex_unlock (&src->dev_lock);
break;
@@ -482,7 +481,8 @@
}
if (num > MAX_CAMERAS) {
- GST_WARNING_OBJECT (src, "cannot support %d cameras", num);
+ GST_ERROR_OBJECT (src, "cannot support %d cameras", num);
+ return FALSE;
}
src->info[0].num = src->info[1].num = -1;
@@ -598,9 +598,6 @@
/* now that we have camera parameters, we can update min and max ev-compensation */
gst_droidcamsrc_update_ev_compensation_bounds (src);
- /* and the photography parameters */
- gst_droidcamsrc_photography_update_params (src);
-
/* And we can also detect the supported image modes. In reality the only thing
we are unable to detect until this moment is _ZSL_AND_HDR */
g_object_notify (G_OBJECT (src), "supported-image-modes");
@@ -1050,37 +1047,6 @@
"Target bitrate", 0, G_MAXINT,
DEFAULT_TARGET_BITRATE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class,
- PROP_SUPPORTED_WB_MODES,
- g_param_spec_variant ("supported-wb-modes",
- "Supported white balance modes", "Supported white balance modes",
- G_VARIANT_TYPE_VARIANT, NULL, G_PARAM_READABLE));
-
- g_object_class_install_property (gobject_class, PROP_SUPPORTED_COLOR_TONES,
- g_param_spec_variant ("supported-color-tones", "Supported color tones",
- "Supported color tones", G_VARIANT_TYPE_VARIANT, NULL,
- G_PARAM_READABLE));
-
- g_object_class_install_property (gobject_class, PROP_SUPPORTED_SCENE_MODES,
- g_param_spec_variant ("supported-scene-modes",
- "Supported scene modes", "Supported scene modes",
- G_VARIANT_TYPE_VARIANT, NULL, G_PARAM_READABLE));
-
- g_object_class_install_property (gobject_class, PROP_SUPPORTED_FLASH_MODES,
- g_param_spec_variant ("supported-flash-modes", "Supported flash modes",
- "Supported flash modes", G_VARIANT_TYPE_VARIANT, NULL,
- G_PARAM_READABLE));
-
- g_object_class_install_property (gobject_class, PROP_SUPPORTED_FOCUS_MODES,
- g_param_spec_variant ("supported-focus-modes", "Supported focus modes",
- "Supported focus modes", G_VARIANT_TYPE_VARIANT, NULL,
- G_PARAM_READABLE));
-
- g_object_class_install_property (gobject_class, PROP_SUPPORTED_ISO_SPEEDS,
- g_param_spec_variant ("supported-iso-speeds", "Supported ISO speeds",
- "Supported ISO speeds", G_VARIANT_TYPE_VARIANT, NULL,
- G_PARAM_READABLE));
-
gst_droidcamsrc_photography_add_overrides (gobject_class);
/* Signals */
@@ -1456,9 +1422,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) {
@@ -1527,7 +1491,6 @@
gboolean ret = FALSE;
GstCaps *peer = NULL;
GstCaps *our_caps = NULL;
- GstCapsFeatures *features;
gchar *preview;
GstVideoInfo info;
@@ -1535,9 +1498,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)) {
@@ -1596,12 +1557,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;
@@ -1658,7 +1615,9 @@
our_caps = gst_caps_make_writable (our_caps);
our_caps = gst_droidcamsrc_pick_largest_resolution (src, our_caps);
- gst_droidcamsrc_params_choose_image_framerate (src->dev->params, our_caps);
+
+ /* imgsrc frame rate is not really important so we will just set it to 30 */
+ gst_caps_set_simple (our_caps, "framerate", G_TYPE_INT, 30, NULL);
if (!gst_pad_set_caps (data->pad, our_caps)) {
GST_ERROR_OBJECT (src, "failed to set caps");
@@ -1753,10 +1712,7 @@
}
vid = g_strdup_printf ("%ix%i", info.width, info.height);
- gchar *key =
- src->dev->params->
- has_separate_video_size_values ? "video-size" : "preview-size";
- gst_droidcamsrc_params_set_string (src->dev->params, key, vid);
+ gst_droidcamsrc_params_set_string (src->dev->params, "video-size", vid);
/* Now we need to find a picture size that is equal to our video size.
* Some devices need to have a picture size otherwise the video mode viewfinder
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.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.20170120.1.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.20170120.1.tar.gz/gst/droidcamsrc/gstdroidcamsrcparams.c
^
|
@@ -51,12 +51,6 @@
g_strfreev (parts);
}
-gboolean
-gst_droidcamsrc_has_param (GstDroidCamSrcParams * params, const char *key)
-{
- return g_hash_table_contains (params->params, key);
-}
-
static int
gst_droidcamsrc_params_get_int_locked (GstDroidCamSrcParams * params,
const char *key)
@@ -201,8 +195,6 @@
gst_droidcamsrc_params_fill_fps_range_arrays_locked (params);
params->is_dirty = FALSE;
- params->has_separate_video_size_values =
- g_hash_table_lookup (params->params, "video-size-values") != NULL;
}
GstDroidCamSrcParams *
@@ -375,8 +367,7 @@
}
GstCaps *
-gst_droidcamsrc_params_get_viewfinder_caps (GstDroidCamSrcParams * params,
- GstVideoFormat format)
+gst_droidcamsrc_params_get_viewfinder_caps (GstDroidCamSrcParams * params)
{
GstCaps *caps;
@@ -384,8 +375,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);
@@ -399,14 +389,8 @@
GstCaps *caps;
g_mutex_lock (¶ms->lock);
-
- gchar *key =
- params->has_separate_video_size_values ? "video-size-values" :
- "preview-size-values";
-
- caps = gst_droidcamsrc_params_get_caps_locked (params, key,
+ caps = gst_droidcamsrc_params_get_caps_locked (params, "video-size-values",
"video/x-raw", GST_CAPS_FEATURE_MEMORY_DROID_VIDEO_META_DATA, "YV12");
-
g_mutex_unlock (¶ms->lock);
return caps;
@@ -493,8 +477,17 @@
gst_caps_unref (c);
- /* the fps we have is valid. Select it if higher than our current target, or wider */
- if (max > target_max || max == target_max && min < target_min) {
+ /* the fps we have is valid. We are trying to pick the widest range */
+ if (target_min == -1) {
+ target_min = min;
+ }
+
+ if (target_max == -1) {
+ target_max = max;
+ }
+
+ if (min <= target_min && max >= target_max) {
+ /* we need to pick the widest range */
target_min = min;
target_max = max;
}
@@ -544,8 +537,17 @@
gst_caps_unref (c);
- /* the fps we have is valid. Select it if higher than our current target, or narrower */
- if (max > target_max || max == target_max && min > target_min) {
+ /* the fps we have is valid. We are trying to pick the widest range */
+ if (target_min == -1) {
+ target_min = min;
+ }
+
+ if (target_max == -1) {
+ target_max = max;
+ }
+
+ if (min >= target_min && max <= target_max) {
+ /* we need to pick the narrowest range */
target_min = min;
target_max = max;
}
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.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
@@ -33,23 +32,22 @@
GHashTable *params;
gboolean is_dirty;
GArray *min_fps_range, *max_fps_range;
- gboolean has_separate_video_size_values;
GMutex lock;
};
GstDroidCamSrcParams * gst_droidcamsrc_params_new (const gchar * params);
void gst_droidcamsrc_params_destroy (GstDroidCamSrcParams *params);
-gboolean gst_droidcamsrc_has_param (GstDroidCamSrcParams * params, const char *key);
void gst_droidcamsrc_params_reload (GstDroidCamSrcParams *params, const gchar * str);
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);
-void gst_droidcamsrc_params_set_string (GstDroidCamSrcParams *params, const gchar *key, const gchar *value);
+void gst_droidcamsrc_params_set_string (GstDroidCamSrcParams *params, const gchar *key,
+ const gchar *value);
const gchar *gst_droidcamsrc_params_get_string (GstDroidCamSrcParams * params, const char *key);
int gst_droidcamsrc_params_get_int (GstDroidCamSrcParams * params, const char *key);
float gst_droidcamsrc_params_get_float (GstDroidCamSrcParams * params, const char *key);
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.tar.gz/gst/droidcamsrc/gstdroidcamsrcphotography.c
^
|
@@ -76,7 +76,6 @@
GList *scene;
GList *wb;
GList *iso;
- gchar *iso_key;
GList *flicker;
};
@@ -86,116 +85,8 @@
gchar *value;
};
-struct DataEntry FlashValues[] = {
- {GST_PHOTOGRAPHY_FLASH_MODE_AUTO, "auto"},
- {GST_PHOTOGRAPHY_FLASH_MODE_OFF, "off"},
- {GST_PHOTOGRAPHY_FLASH_MODE_ON, "on"},
- {GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE, "red-eye"}
-};
-
-struct DataEntry FocusValues[] = {
- {GST_PHOTOGRAPHY_FOCUS_MODE_AUTO, "auto"},
- {GST_PHOTOGRAPHY_FOCUS_MODE_MACRO, "macro"},
- {GST_PHOTOGRAPHY_FOCUS_MODE_INFINITY, "infinity"},
- {GST_PHOTOGRAPHY_FOCUS_MODE_HYPERFOCAL, "fixed"},
- {GST_PHOTOGRAPHY_FOCUS_MODE_EXTENDED, "edof"},
- {GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL, "continuous"},
- {GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_EXTENDED, "continuous"},
- {GST_PHOTOGRAPHY_FOCUS_MODE_MANUAL, "manual"}
-};
-
-struct DataEntry ISOValues[] = {
- {0, "auto"},
- {0, "iso-auto"},
- {1, "ISO_HJR"},
- {100, "ISO100"},
- {100, "iso-100"},
- {100, "100"},
- {200, "ISO200"},
- {200, "iso-200"},
- {200, "200"},
- {400, "ISO400"},
- {400, "iso-400"},
- {400, "400"},
- {800, "ISO800"},
- {800, "iso-800"},
- {800, "800"},
- {1600, "ISO1600"},
- {1600, "1600"},
- {3200, "ISO3200"},
- {3200, "3200"},
- {6400, "ISO6400"},
- {6400, "6400"},
- {12800, "ISO12800"},
- {12800, "12800"}
-};
-
-struct DataEntry WhiteBalanceValues[] = {
- {GST_PHOTOGRAPHY_WB_MODE_AUTO, "auto"},
- {GST_PHOTOGRAPHY_WB_MODE_DAYLIGHT, "daylight"},
- {GST_PHOTOGRAPHY_WB_MODE_CLOUDY, "cloudy-daylight"},
- {GST_PHOTOGRAPHY_WB_MODE_SUNSET, "twilight"},
- {GST_PHOTOGRAPHY_WB_MODE_TUNGSTEN, "incandescent"},
- {GST_PHOTOGRAPHY_WB_MODE_FLUORESCENT, "fluorescent"},
- {GST_PHOTOGRAPHY_WB_MODE_MANUAL, "manual"},
- {GST_PHOTOGRAPHY_WB_MODE_WARM_FLUORESCENT, "warm-fluorescent"},
- {GST_PHOTOGRAPHY_WB_MODE_SHADE, "shade"}
-};
-
-struct DataEntry SceneValues[] = {
- {GST_PHOTOGRAPHY_SCENE_MODE_PORTRAIT, "portrait"},
- {GST_PHOTOGRAPHY_SCENE_MODE_LANDSCAPE, "landscape"},
- {GST_PHOTOGRAPHY_SCENE_MODE_SPORT, "sports"},
- {GST_PHOTOGRAPHY_SCENE_MODE_NIGHT, "night"},
- {GST_PHOTOGRAPHY_SCENE_MODE_MANUAL, "auto"},
- {GST_PHOTOGRAPHY_SCENE_MODE_AUTO, "asd"},
- {GST_PHOTOGRAPHY_SCENE_MODE_ACTION, "action"},
- {GST_PHOTOGRAPHY_SCENE_MODE_NIGHT_PORTRAIT, "night-portrait"},
- {GST_PHOTOGRAPHY_SCENE_MODE_THEATRE, "theatre"},
- {GST_PHOTOGRAPHY_SCENE_MODE_BEACH, "beach"},
- {GST_PHOTOGRAPHY_SCENE_MODE_SNOW, "snow"},
- {GST_PHOTOGRAPHY_SCENE_MODE_SUNSET, "sunset"},
- {GST_PHOTOGRAPHY_SCENE_MODE_STEADY_PHOTO, "steadyphoto"},
- {GST_PHOTOGRAPHY_SCENE_MODE_FIREWORKS, "fireworks"},
- {GST_PHOTOGRAPHY_SCENE_MODE_PARTY, "party"},
- {GST_PHOTOGRAPHY_SCENE_MODE_CANDLELIGHT, "candlelight"},
- {GST_PHOTOGRAPHY_SCENE_MODE_BARCODE, "barcode"},
- {GST_PHOTOGRAPHY_SCENE_MODE_BACKLIGHT, "backlight"},
- {GST_PHOTOGRAPHY_SCENE_MODE_FLOWERS, "flowers"},
- {GST_PHOTOGRAPHY_SCENE_MODE_AR, "AR"},
- {GST_PHOTOGRAPHY_SCENE_MODE_HDR, "hdr"}
-};
-
-struct DataEntry ColourToneValues[] = {
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_NORMAL, "none"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_SEPIA, "sepia"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEGATIVE, "negative"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRAYSCALE, "mono"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_VIVID, "vivid"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_SOLARIZE, "solarize"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKY_BLUE, "still-sky-blue"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRASS_GREEN, "still-grass-green"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKIN_WHITEN, "still-skin-whiten-medium"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_POSTERIZE, "posterize"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_WHITEBOARD, "whiteboard"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_BLACKBOARD, "blackboard"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_AQUA, "aqua"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_EMBOSS, "emboss"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKETCH, "sketch"},
- {GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEON, "neon"}
-};
-
-struct DataEntry FlickerValues[] = {
- {GST_PHOTOGRAPHY_FLICKER_REDUCTION_OFF, "off"},
- {GST_PHOTOGRAPHY_FLICKER_REDUCTION_50HZ, "50hz"},
- {GST_PHOTOGRAPHY_FLICKER_REDUCTION_60HZ, "60hz"},
- {GST_PHOTOGRAPHY_FLICKER_REDUCTION_AUTO, "auto"}
-};
-
-static GList *gst_droidcamsrc_photography_append_list (GList * list,
- const int key, const gchar * value);
-static GList *gst_droidcamsrc_photography_create_list (const gchar * params,
- struct DataEntry entries[], gsize len);
+static GList *gst_droidcamsrc_photography_load (GKeyFile * file,
+ const gchar * property);
#define PHOTO_IFACE_FUNC(name, tset, tget) \
static gboolean gst_droidcamsrc_get_##name (GstDroidCamSrc * src, tget val); \
@@ -233,14 +124,6 @@
#define SET_ENUM(table,val,droid,memb) \
int x; \
int len = g_list_length (table); \
- if (len == 0) { \
- GST_WARNING_OBJECT (src, "params for %s not yet available. not applying value %d yet", droid, val); \
- GST_OBJECT_LOCK (src); \
- src->photo->settings.memb = val; \
- GST_OBJECT_UNLOCK (src); \
- return FALSE; \
- } \
- \
const gchar *value = NULL; \
for (x = 0; x < len; x++) { \
struct DataEntry *entry = (struct DataEntry *) g_list_nth_data (table, x); \
@@ -327,31 +210,6 @@
capture_caps, user_data);
}
-GVariant *
-gst_droid_camsrc_glist_to_array (GList * list)
-{
- int len = g_list_length (list);
-
- if (len == 0) {
- return 0;
- }
-
- GVariant *modes;
- GVariantBuilder *builder;
- builder = g_variant_builder_new (G_VARIANT_TYPE ("ai"));
-
- struct DataEntry *entry;
- GList *l;
- for (l = list; l != NULL; l = l->next) {
- entry = l->data;
- g_variant_builder_add (builder, "i", entry->key);
- }
-
- modes = g_variant_new ("ai", builder);
- g_variant_builder_unref (builder);
- return modes;
-}
-
static void
gst_droidcamsrc_photography_set_autofocus (GstPhotography * photo, gboolean on)
{
@@ -632,53 +490,6 @@
{
/* not supported */
}
-
- return TRUE;
-
- case PROP_SUPPORTED_WB_MODES:
- {
- GVariant *wb_modes = gst_droid_camsrc_glist_to_array (src->photo->wb);
- g_value_set_variant (value, wb_modes);
- }
- return TRUE;
-
- case PROP_SUPPORTED_COLOR_TONES:
- {
- GVariant *effects =
- gst_droid_camsrc_glist_to_array (src->photo->color_tone);
- g_value_set_variant (value, effects);
- }
- return TRUE;
-
- case PROP_SUPPORTED_SCENE_MODES:
- {
- GVariant *exposure_modes =
- gst_droid_camsrc_glist_to_array (src->photo->scene);
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.tar.gz/gst/droidcamsrc/gstdroidcamsrcphotography.h
^
|
@@ -47,12 +47,6 @@
PROP_SENSOR_ORIENTATION,
PROP_SENSOR_MOUNT_ANGLE,
PROP_TARGET_BITRATE,
- PROP_SUPPORTED_WB_MODES,
- PROP_SUPPORTED_COLOR_TONES,
- PROP_SUPPORTED_SCENE_MODES,
- PROP_SUPPORTED_FLASH_MODES,
- PROP_SUPPORTED_FOCUS_MODES,
- PROP_SUPPORTED_ISO_SPEEDS,
/* photography interface */
PROP_WB_MODE,
@@ -76,13 +70,12 @@
PROP_MIN_EXPOSURE_TIME,
PROP_MAX_EXPOSURE_TIME,
PROP_NOISE_REDUCTION,
- PROP_EXPOSURE_MODE
+ PROP_EXPOSURE_MODE,
} GstDroidCamSrcProperties;
void gst_droidcamsrc_photography_register (gpointer g_iface, gpointer iface_data);
void gst_droidcamsrc_photography_add_overrides (GObjectClass * klass);
-void gst_droidcamsrc_photography_init (GstDroidCamSrc * src);
-void gst_droidcamsrc_photography_update_params (GstDroidCamSrc * src);
+void gst_droidcamsrc_photography_init (GstDroidCamSrc * src, gint dev);
void gst_droidcamsrc_photography_destroy (GstDroidCamSrc * src);
gboolean gst_droidcamsrc_photography_get_property (GstDroidCamSrc * src, guint prop_id,
GValue * value, GParamSpec * pspec);
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.tar.gz/gst/droidcamsrc/gstdroidcamsrcrecorder.c
^
|
@@ -67,6 +67,9 @@
recorder->md.bitrate = target_bitrate;
+ /* set the color format */
+ recorder->md.color_format = droid_media_camera_get_video_color_format (cam);
+
recorder->recorder = droid_media_recorder_create (cam, &recorder->md);
if (!recorder->recorder) {
@@ -85,10 +88,6 @@
gst_droidcamsrc_recorder_update_vid (GstDroidCamSrcRecorder * recorder,
GstVideoInfo * info, GstCaps * caps)
{
- if (recorder->codec) {
- gst_droid_codec_unref (recorder->codec);
- }
-
recorder->codec =
gst_droid_codec_new_from_caps (caps, GST_DROID_CODEC_ENCODER_VIDEO);
recorder->md.parent.width = info->width;
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.tar.gz/gst/droidcodec/gstdroidaenc.c
^
|
@@ -115,14 +115,6 @@
md.max_input_size = info.bpf * enc->rate;
enc->codec = droid_media_codec_create_encoder (&md);
- // Reset timestamp clock
- GstClock *clock = GST_ELEMENT_CLOCK (enc);
- if (clock) {
- gst_object_ref (clock);
- GST_ELEMENT_CAST (enc)->base_time = gst_clock_get_time (clock);
- gst_object_unref (clock);
- }
-
if (!enc->codec) {
GST_ELEMENT_ERROR (enc, LIBRARY, SETTINGS, NULL,
("Failed to create encoder"));
@@ -515,23 +507,8 @@
data.data.size = info.size;
data.data.data = g_malloc (info.size);
data.sync = false;
+ data.ts = GST_TIME_AS_USECONDS (buffer->pts);
-/* Check if the buffer has a valid timestamp, and if not then set it from the
- * encoder's clock, as some versions of libstagefright throw away frames if
- * it doesn't increase
- */
- GstClockTime ts = GST_BUFFER_TIMESTAMP (buffer);
- if (!GST_CLOCK_TIME_IS_VALID (ts)) {
- GST_DEBUG_OBJECT (enc, "Replacing invalid timestamp: %" GST_TIME_FORMAT,
- GST_TIME_ARGS (ts));
- GstClock *clock = gst_element_get_clock (enc);
- if (clock) {
- ts = gst_clock_get_time (clock) - GST_ELEMENT_CAST (enc)->base_time;
- GST_DEBUG_OBJECT (enc, "New timestamp: %" GST_TIME_FORMAT,
- GST_TIME_ARGS (ts));
- }
- }
- data.ts = GST_TIME_AS_USECONDS (ts);
memcpy (data.data.data, info.data, info.size);
gst_buffer_unmap (buffer, &info);
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.tar.gz/gst/droidcodec/gstdroidvdec.c
^
|
@@ -27,7 +27,6 @@
#include "gst/droid/gstdroidmediabuffer.h"
#include "gst/droid/gstdroidbufferpool.h"
#include "plugin.h"
-#include "droidmediaconstants.h"
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <string.h> /* memset() */
@@ -45,24 +44,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 +88,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;
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.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,20 +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;
};
struct _GstDroidVDecClass
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.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
{
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20170120.1.tar.gz/tools/gstdroidcamsrcconf.c
^
|
@@ -56,7 +56,6 @@
ADD_ENTRY (GST_PHOTOGRAPHY_FLASH_MODE_AUTO, "auto"),
ADD_ENTRY (GST_PHOTOGRAPHY_FLASH_MODE_OFF, "off"),
ADD_ENTRY (GST_PHOTOGRAPHY_FLASH_MODE_ON, "on"),
- ADD_ENTRY (GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE, "red-eye"),
{NULL, -1}
}},
{"focus-mode-values", "focus-mode", {
@@ -68,29 +67,29 @@
ADD_ENTRY (GST_PHOTOGRAPHY_FOCUS_MODE_EXTENDED, "edof"),
ADD_ENTRY (GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL, "continuous"),
ADD_ENTRY (GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_EXTENDED, "continuous"),
- ADD_ENTRY (GST_PHOTOGRAPHY_FOCUS_MODE_MANUAL, "manual"),
+ ADD_ENTRY (GST_PHOTOGRAPHY_FOCUS_MODE_MANUAL, NULL),
{NULL, -1}
}},
{"whitebalance-values", "white-balance-mode", {
ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_AUTO, "auto"),
ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_DAYLIGHT, "daylight"),
ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_CLOUDY, "cloudy-daylight"),
- ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_SUNSET, "twilight"),
+ ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_SUNSET, NULL),
ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_TUNGSTEN, "incandescent"),
ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_FLUORESCENT, "fluorescent"),
ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_MANUAL, NULL),
- ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_WARM_FLUORESCENT, "warm-fluorescent"),
- ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_SHADE, "shade"),
+ ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_WARM_FLUORESCENT, NULL),
+ ADD_ENTRY (GST_PHOTOGRAPHY_WB_MODE_SHADE, NULL),
{NULL, -1}
}},
{"scene-mode-values", "scene-mode", {
- ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_MANUAL, "auto"),
+ ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_MANUAL, NULL),
ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_CLOSEUP, NULL),
ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_PORTRAIT, "portrait"),
ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_LANDSCAPE, "landscape"),
ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_SPORT, "sports"),
ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_NIGHT, "night"),
- ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_AUTO, "asd"),
+ ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_AUTO, "auto"),
ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_ACTION, "action"),
ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_NIGHT_PORTRAIT, "night-portrait"),
ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_THEATRE, "theatre"),
@@ -102,10 +101,6 @@
ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_PARTY, "party"),
ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_CANDLELIGHT, "candlelight"),
ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_BARCODE, "barcode"),
- ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_BACKLIGHT, "backlight"),
- ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_FLOWERS, "flowers"),
- ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_AR, "AR"),
- ADD_ENTRY (GST_PHOTOGRAPHY_SCENE_MODE_HDR, "hdr"),
{NULL, -1}
}},
{"effect-values", "color-tone-mode", {
@@ -125,16 +120,11 @@
ADD_ENTRY (GST_PHOTOGRAPHY_COLOR_TONE_MODE_WHITEBOARD, "whiteboard"),
ADD_ENTRY (GST_PHOTOGRAPHY_COLOR_TONE_MODE_BLACKBOARD, "blackboard"),
ADD_ENTRY (GST_PHOTOGRAPHY_COLOR_TONE_MODE_AQUA, "aqua"),
- ADD_ENTRY (GST_PHOTOGRAPHY_COLOR_TONE_MODE_EMBOSS, "emboss"),
- ADD_ENTRY (GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKETCH, "sketch"),
- ADD_ENTRY (GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEON, "neon"),
{NULL, -1}
}},
- // Qualcomm ISO values (e.g. ISO100) and Intel (iso-100)
{"iso-values", "iso-speed", {
ADD_ENTRY (0, "auto"),
ADD_ENTRY (0, "iso-auto"),
- ADD_ENTRY (1, "ISO_HJR"),
ADD_ENTRY (100, "ISO100"),
ADD_ENTRY (100, "iso-100"),
ADD_ENTRY (200, "ISO200"),
@@ -145,23 +135,8 @@
ADD_ENTRY (800, "iso-800"),
ADD_ENTRY (1600, "ISO1600"),
ADD_ENTRY (3200, "ISO3200"),
- ADD_ENTRY (6400, "ISO6400"),
- ADD_ENTRY (12800, "ISO12800"),
{NULL, -1}
}},
- // Mediatek ISO values
- {"iso-speed-values", "iso-speed", {
- ADD_ENTRY (0, "auto"),
- ADD_ENTRY (100, "100"),
- ADD_ENTRY (200, "200"),
- ADD_ENTRY (400, "400"),
- ADD_ENTRY (800, "800"),
- ADD_ENTRY (1600, "1600"),
- ADD_ENTRY (3200, "3200"),
- ADD_ENTRY (6400, "6400"),
- ADD_ENTRY (12800, "12800"),
- {NULL, -1}
- }},
{"antibanding-values", "flicker-mode", {
ADD_ENTRY (GST_PHOTOGRAPHY_FLICKER_REDUCTION_OFF, "off"),
ADD_ENTRY (GST_PHOTOGRAPHY_FLICKER_REDUCTION_50HZ, "50hz"),
|
[-]
[+]
|
Deleted |
_service:tar_git:gstreamer1.0-droid-0.20190506.0.tar.gz/gstreamer-droid-1.0.pc.in
^
|
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@/gstreamer-1.0
-
-Name: GstDroid library
-Description: GstDroid library
-Requires: gstreamer-1.0 gstreamer-base-1.0 android-headers
-Version: @VERSION@
-Libs: -L${libdir} -lgstdroid-1.0
-Cflags: -I${includedir}
|