[-]
[+]
|
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">a5760ca9f73a44ab99c64ba1dc01d629c0fd5a39</param>
+ <param name="revision">d8e3ce347486973f96190c0dee756e00828bcd99</param>
<param name="token"/>
<param name="debian">N</param>
<param name="dumb">N</param>
|
[-]
[+]
|
Deleted |
_service:tar_git:gstreamer1.0-droid-0.20161124.0+master.20161207150822.9.ga5760ca.tar.gz/gst-libs/gst/droid/gstdroidcodec.c
^
|
@@ -1,1123 +0,0 @@
-/*
- * gst-droid
- *
- * Copyright (C) 2014-2015 Mohammed Sameer <msameer@foolab.org>
- * Copyright (C) 2015 Jolla LTD.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "gstdroidcodec.h"
-#include <glib.h>
-#include <gst/base/gstbytewriter.h>
-#ifndef GST_USE_UNSTABLE_API
-#define GST_USE_UNSTABLE_API
-#endif /* GST_USE_UNSTABLE_API */
-#include <gst/codecparsers/gsth264parser.h>
-
-GST_DEBUG_CATEGORY_EXTERN (gst_droid_codec_debug);
-#define GST_CAT_DEFAULT gst_droid_codec_debug
-
-static GstBuffer *create_mpeg4venc_codec_data (DroidMediaData * data);
-static GstBuffer *create_h264enc_codec_data (DroidMediaData * data);
-static gboolean create_mpeg4vdec_codec_data_from_codec_data (GstDroidCodec *
- codec, GstBuffer * data, DroidMediaData * out);
-static gboolean create_h264dec_codec_data_from_codec_data (GstDroidCodec *
- codec, GstBuffer * data, DroidMediaData * out);
-static gboolean create_vp8vdec_codec_data_from_codec_data (GstDroidCodec *
- codec, GstBuffer * data, DroidMediaData * out);
-static gboolean create_aacdec_codec_data_from_codec_data (GstDroidCodec * codec,
- GstBuffer * data, DroidMediaData * out);
-static gboolean create_aacdec_codec_data_from_frame_data (GstDroidCodec * codec,
- GstBuffer * frame_data, DroidMediaData * out);
-static gboolean process_h264dec_data (GstDroidCodec * codec, GstBuffer * buffer,
- DroidMediaData * out);
-static gboolean process_aacdec_data (GstDroidCodec * codec, GstBuffer * buffer,
- 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);
-static gboolean process_h264enc_data (DroidMediaData * in,
- DroidMediaData * out);
-static void gst_droid_codec_release_input_frame (void *data);
-static void gst_droid_codec_free (GstDroidCodec * codec);
-static void gst_droid_codec_type_fill_quirks (GstDroidCodec * codec);
-
-GST_DEFINE_MINI_OBJECT_TYPE (GstDroidCodec, gst_droid_codec);
-
-typedef struct
-{
- gpointer data;
-} GstDroidCodecFrameReleaseData;
-
-struct _GstDroidCodecPrivate
-{
- guint h264_nal;
- gboolean aac_adts;
-};
-
-struct _GstDroidCodecInfo
-{
- GstDroidCodecType type;
- const gchar *mime;
- const gchar *droid;
- const gchar *caps;
- gboolean enabled;
-
- gboolean (*validate_structure) (GstDroidCodec * codec,
- const GstStructure * s);
- void (*complement_caps) (GstCaps * caps);
- GstBuffer *(*create_encoder_codec_data) (DroidMediaData * data);
- gboolean (*process_encoder_data) (DroidMediaData * in,
- DroidMediaData * out);
- gboolean (*create_decoder_codec_data_from_codec_data) (GstDroidCodec *
- codec, GstBuffer * codec_data, DroidMediaData * out);
- gboolean (*create_decoder_codec_data_from_frame_data) (GstDroidCodec *
- codec, GstBuffer * frame_data, DroidMediaData * out);
- gboolean (*process_decoder_data) (GstDroidCodec * codec, GstBuffer * buffer,
- DroidMediaData * out);
-};
-
-/* codecs */
-#define CAPS_FRAGMENT_AUDIO_ENCODER \
- " , channels = (int) [1, 2]"
-
-static GstDroidCodecInfo codecs[] = {
- /* audio decoders */
- {GST_DROID_CODEC_DECODER_AUDIO, "audio/mpeg", "audio/mp4a-latm",
- "audio/mpeg, mpegversion=(int){2, 4}, stream-format=(string){raw, adts}",
- TRUE,
- 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,
- is_mpeg4v, NULL, NULL, NULL,
- create_mpeg4vdec_codec_data_from_codec_data, NULL, NULL},
-
- {GST_DROID_CODEC_DECODER_VIDEO, "video/x-h264", "video/avc",
- "video/x-h264, stream-format=avc,alignment=au", TRUE,
- is_h264_dec, NULL, NULL, NULL,
- create_h264dec_codec_data_from_codec_data, NULL, process_h264dec_data},
-
- {GST_DROID_CODEC_DECODER_VIDEO, "video/x-h263", "video/3gpp",
- "video/x-h263", TRUE, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL},
-
- {GST_DROID_CODEC_DECODER_VIDEO, "video/x-vp8", "video/x-vnd.on2.vp8",
- "video/x-vp8", FALSE, NULL, NULL, NULL, NULL,
- create_vp8vdec_codec_data_from_codec_data, NULL, NULL},
-
- /* audio encoders */
- {GST_DROID_CODEC_ENCODER_AUDIO, "audio/mpeg", "audio/mp4a-latm",
- "audio/mpeg, mpegversion=(int)4, stream-format=(string){raw}"
- CAPS_FRAGMENT_AUDIO_ENCODER, TRUE,
- is_mpeg4v, NULL, create_mpeg4venc_codec_data, NULL, NULL, NULL, NULL},
-
- /* video encoders */
- {GST_DROID_CODEC_ENCODER_VIDEO, "video/mpeg", "video/mp4v-es",
- "video/mpeg, mpegversion=4, systemstream=false", TRUE,
- is_mpeg4v, NULL, create_mpeg4venc_codec_data, NULL, NULL, NULL, NULL},
-
- {GST_DROID_CODEC_ENCODER_VIDEO, "video/x-h264", "video/avc",
- "video/x-h264, stream-format=avc,alignment=au", TRUE,
- is_h264_enc, h264enc_complement, create_h264enc_codec_data,
- process_h264enc_data, NULL, NULL, NULL},
-};
-
-GstDroidCodec *
-gst_droid_codec_new_from_caps (GstCaps * caps, GstDroidCodecType type)
-{
- int x = 0;
- int len = G_N_ELEMENTS (codecs);
- GstStructure *s = gst_caps_get_structure (caps, 0);
- const gchar *name = gst_structure_get_name (s);
- GstDroidCodec *codec = g_slice_new (GstDroidCodec);
- codec->data = g_slice_new0 (GstDroidCodecPrivate);
-
- for (x = 0; x < len; x++) {
- if (codecs[x].type != type) {
- continue;
- }
-
- gboolean is_equal = g_strcmp0 (codecs[x].mime, name) == 0;
- if (!is_equal) {
- continue;
- }
-
- if (!codecs[x].validate_structure
- || codecs[x].validate_structure (codec, s)) {
- gst_mini_object_init (GST_MINI_OBJECT_CAST (codec), 0,
- gst_droid_codec_get_type (), NULL, NULL,
- (GstMiniObjectFreeFunction) gst_droid_codec_free);
-
- codec->info = &codecs[x];
-
- /* Fill codec quirks */
- gst_droid_codec_type_fill_quirks (codec);
-
- return codec;
- }
- }
-
- gst_droid_codec_free (codec);
-
- return NULL;
-}
-
-GstCaps *
-gst_droid_codec_get_all_caps (GstDroidCodecType type)
-{
- GstCaps *caps = gst_caps_new_empty ();
- int x = 0;
- int len = G_N_ELEMENTS (codecs);
- GKeyFile *file = g_key_file_new ();
- gchar *path = g_strdup_printf ("%s/gst-droid/gstdroidcodec.conf", SYSCONFDIR);
|
[-]
[+]
|
Deleted |
_service:tar_git:gstreamer1.0-droid-0.20161124.0+master.20161207150822.9.ga5760ca.tar.gz/gst/droidcamsrc/gstdroidcamsrcrecorder.c
^
|
@@ -1,176 +0,0 @@
-/*
- * gst-droid
- *
- * Copyright (C) 2016 Jolla LTD.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "gstdroidcamsrcrecorder.h"
-#include "gstdroidcamsrc.h"
-#include <gst/droid/gstdroidcodec.h>
-
-#define GST_DROIDCAMSRC_RECORDER_TARGET_BITRATE_DEFAULT 192000
-
-static void gst_droidcamsrc_recorder_data_available (void *data,
- DroidMediaCodecData * encoded);
-
-GstDroidCamSrcRecorder *
-gst_droidcamsrc_recorder_create (GstDroidCamSrcPad * vidsrc)
-{
- GstDroidCamSrcRecorder *recorder = g_new0 (GstDroidCamSrcRecorder, 1);
-
- recorder->vidsrc = vidsrc;
- recorder->md.bitrate = GST_DROIDCAMSRC_RECORDER_TARGET_BITRATE_DEFAULT;
- recorder->md.meta_data = true;
- recorder->md.parent.flags = DROID_MEDIA_CODEC_HW_ONLY;
-
- return recorder;
-}
-
-void
-gst_droidcamsrc_recorder_destroy (GstDroidCamSrcRecorder * recorder)
-{
- if (recorder->codec) {
- gst_droid_codec_unref (recorder->codec);
- }
-
- g_free (recorder);
-}
-
-gboolean
-gst_droidcamsrc_recorder_init (GstDroidCamSrcRecorder * recorder,
- DroidMediaCamera * cam, gint32 target_bitrate)
-{
- if (!recorder->codec) {
- return FALSE;
- }
-
- if (recorder->recorder) {
- droid_media_recorder_destroy (recorder->recorder);
- }
-
- 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) {
- return FALSE;
- }
-
- DroidMediaCodecDataCallbacks cb;
- cb.data_available = gst_droidcamsrc_recorder_data_available;
-
- droid_media_recorder_set_data_callbacks (recorder->recorder, &cb, recorder);
-
- return TRUE;
-}
-
-void
-gst_droidcamsrc_recorder_update_vid (GstDroidCamSrcRecorder * recorder,
- GstVideoInfo * info, GstCaps * caps)
-{
- recorder->codec =
- gst_droid_codec_new_from_caps (caps, GST_DROID_CODEC_ENCODER_VIDEO);
- recorder->md.parent.width = info->width;
- recorder->md.parent.height = info->height;
- recorder->md.stride = recorder->md.parent.width;
- recorder->md.slice_height = recorder->md.parent.height;
- recorder->md.parent.fps = info->fps_n / info->fps_d;
-
- if (recorder->codec) {
- recorder->md.parent.type = gst_droid_codec_get_droid_type (recorder->codec);
- }
-}
-
-gboolean
-gst_droidcamsrc_recorder_start (GstDroidCamSrcRecorder * recorder)
-{
- return droid_media_recorder_start (recorder->recorder);
-}
-
-void
-gst_droidcamsrc_recorder_stop (GstDroidCamSrcRecorder * recorder)
-{
- droid_media_recorder_stop (recorder->recorder);
-}
-
-static void
-gst_droidcamsrc_recorder_data_available (void *data,
- DroidMediaCodecData * encoded)
-{
- GstDroidCamSrcRecorder *recorder = (GstDroidCamSrcRecorder *) data;
- GstDroidCamSrc *src =
- GST_DROIDCAMSRC (GST_PAD_PARENT (recorder->vidsrc->pad));
- GstBuffer *buffer = NULL;
-
- if (encoded->codec_config) {
- GstBuffer *codec_data = NULL;
- GstCaps *caps = NULL;
- GstCaps *current;
- gboolean ret;
-
- codec_data =
- gst_droid_codec_create_encoder_codec_data (recorder->codec,
- &encoded->data);
-
- if (!codec_data) {
- GST_ELEMENT_ERROR (src, STREAM, FORMAT, (NULL),
- ("Failed to construct codec_data. Expect corrupted stream"));
- return;
- }
-
- current = gst_pad_get_current_caps (recorder->vidsrc->pad);
- caps = gst_caps_copy (current);
- gst_caps_unref (current);
- current = NULL;
-
- gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER, codec_data, NULL);
- ret = gst_pad_set_caps (recorder->vidsrc->pad, caps);
- gst_caps_unref (caps);
-
- if (!ret) {
- GST_ELEMENT_ERROR (src, STREAM, FORMAT, (NULL),
- ("Failed to set video caps"));
- }
-
- return;
- }
-
- buffer =
- gst_droid_codec_prepare_encoded_data (recorder->codec, &encoded->data);
- if (!buffer) {
- GST_ELEMENT_ERROR (src, LIBRARY, ENCODE, (NULL),
- ("failed to process encoded data"));
- return;
- }
-
- GST_BUFFER_PTS (buffer) = encoded->ts;
- GST_BUFFER_DTS (buffer) = encoded->decoding_ts;
-
- if (encoded->sync) {
- GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
- } else {
- GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
- }
-
- gst_droidcamsrc_dev_queue_video_buffer (src->dev, buffer);
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:gstreamer1.0-droid-0.20161124.0+master.20161207150822.9.ga5760ca.tar.gz/gst/droidcamsrc/gstdroidcamsrcrecorder.h
^
|
@@ -1,56 +0,0 @@
-/*
- * gst-droid
- *
- * Copyright (C) 2016 Jolla LTD.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __GST_DROIDCAMSRC_RECORDER_H__
-#define __GST_DROIDCAMSRC_RECORDER_H__
-
-#include <gst/gst.h>
-#include <gst/video/video.h>
-#include <droidmediarecorder.h>
-
-G_BEGIN_DECLS
-
-typedef struct _GstDroidCamSrcRecorder GstDroidCamSrcRecorder;
-typedef struct _GstDroidCodec GstDroidCodec;
-typedef struct _GstDroidCamSrcPad GstDroidCamSrcPad;
-
-struct _GstDroidCamSrcRecorder
-{
- /* opaque */
-
- GstDroidCamSrcPad *vidsrc;
- GstDroidCodec *codec;
- DroidMediaRecorder *recorder;
- DroidMediaCodecEncoderMetaData md;
-};
-
-GstDroidCamSrcRecorder *gst_droidcamsrc_recorder_create (GstDroidCamSrcPad *vidsrc);
-void gst_droidcamsrc_recorder_destroy (GstDroidCamSrcRecorder *recorder);
-
-gboolean gst_droidcamsrc_recorder_init (GstDroidCamSrcRecorder *recorder, DroidMediaCamera *cam, gint32 target_bitrate);
-
-void gst_droidcamsrc_recorder_update_vid (GstDroidCamSrcRecorder *recorder, GstVideoInfo *info, GstCaps *caps);
-
-gboolean gst_droidcamsrc_recorder_start (GstDroidCamSrcRecorder *recorder);
-void gst_droidcamsrc_recorder_stop (GstDroidCamSrcRecorder *recorder);
-
-G_END_DECLS
-
-#endif /* __GST_DROIDCAMSRC_RECORDER_H__ */
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst-libs/gst/droid/Makefile.am
^
|
@@ -1,4 +1,3 @@
-AM_CPPFLAGS = -DSYSCONFDIR=\"$(sysconfdir)\"
lib_LTLIBRARIES = libgstdroid-@GST_API_VERSION@.la
libgstdroid_@GST_API_VERSION@_ladir = $(libdir)
@@ -16,12 +15,10 @@
gstdroidmediabuffer.c \
gstdroidbufferpool.c \
gstdroidquery.c \
- gstdroidcodec.c \
/usr/share/droidmedia/hybris.c
libgstdroid_@GST_API_VERSION@_la_include_HEADERS = \
gstwrappedmemory.h \
gstdroidmediabuffer.h \
gstdroidbufferpool.h \
- gstdroidquery.h \
- gstdroidcodec.h
\ No newline at end of file
+ gstdroidquery.h
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcamsrc/Makefile.am
^
|
@@ -19,8 +19,7 @@
gstdroidcamsrcphotography.c \
gstdroidcamsrcquirks.c \
gstdroidcamsrcexif.c \
- gstdroidcamsrcmode.c \
- gstdroidcamsrcrecorder.c
+ gstdroidcamsrcmode.c
noinst_HEADERS = \
gstdroidcamsrc.h \
@@ -30,5 +29,4 @@
gstdroidcamsrcphotography.h \
gstdroidcamsrcquirks.h \
gstdroidcamsrcexif.h \
- gstdroidcamsrcmode.h \
- gstdroidcamsrcrecorder.h
+ gstdroidcamsrcmode.h
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcamsrc/gstdroidcamsrc.c
^
|
@@ -30,9 +30,7 @@
#include "gst/droid/gstdroidmediabuffer.h"
#include "gst/droid/gstwrappedmemory.h"
#include "gst/droid/gstdroidquery.h"
-#include "gst/droid/gstdroidcodec.h"
#include "gstdroidcamsrcphotography.h"
-#include "gstdroidcamsrcrecorder.h"
#include "droidmediacamera.h"
#ifndef GST_USE_UNSTABLE_API
#define GST_USE_UNSTABLE_API
@@ -61,14 +59,12 @@
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("image/jpeg"));
-#if 0
static GstStaticPadTemplate vid_src_template_factory =
GST_STATIC_PAD_TEMPLATE (GST_BASE_CAMERA_SRC_VIDEO_PAD_NAME,
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
(GST_CAPS_FEATURE_MEMORY_DROID_VIDEO_META_DATA, "{YV12}")));
-#endif
static gboolean gst_droidcamsrc_pad_activate_mode (GstPad * pad,
GstObject * parent, GstPadMode mode, gboolean active);
@@ -90,7 +86,6 @@
static gchar *gst_droidcamsrc_find_picture_resolution (GstDroidCamSrc * src,
const gchar * resolution);
static gboolean gst_droidcamsrc_is_zsl_and_hdr_supported (GstDroidCamSrc * src);
-static GstCaps *gst_droidcamsrc_get_video_caps_locked (GstDroidCamSrc * src);
enum
{
@@ -113,16 +108,14 @@
#define DEFAULT_IMAGE_NOISE_REDUCTION TRUE
#define DEFAULT_SENSOR_ORIENTATION 0
#define DEFAULT_IMAGE_MODE GST_DROIDCAMSRC_IMAGE_MODE_NORMAL
-#define DEFAULT_TARGET_BITRATE 12000000
static GstDroidCamSrcPad *
-gst_droidcamsrc_create_pad (GstDroidCamSrc * src,
+gst_droidcamsrc_create_pad (GstDroidCamSrc * src, GstStaticPadTemplate * tpl,
const gchar * name, gboolean capture_pad)
{
GstDroidCamSrcPad *pad = g_slice_new0 (GstDroidCamSrcPad);
- GstPadTemplate *tpl =
- gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (src), name);
- pad->pad = gst_pad_new_from_template (tpl, name);
+
+ pad->pad = gst_pad_new_from_static_template (tpl, name);
/* TODO: I don't think this is needed */
gst_pad_use_fixed_caps (pad->pad);
@@ -181,20 +174,19 @@
src->height = 0;
src->fps_n = 0;
src->fps_d = 1;
- src->target_bitrate = DEFAULT_TARGET_BITRATE;
gst_droidcamsrc_photography_init (src, DEFAULT_CAMERA_DEVICE);
src->vfsrc = gst_droidcamsrc_create_pad (src,
- GST_BASE_CAMERA_SRC_VIEWFINDER_PAD_NAME, FALSE);
+ &vf_src_template_factory, GST_BASE_CAMERA_SRC_VIEWFINDER_PAD_NAME, FALSE);
src->vfsrc->negotiate = gst_droidcamsrc_vfsrc_negotiate;
src->imgsrc = gst_droidcamsrc_create_pad (src,
- GST_BASE_CAMERA_SRC_IMAGE_PAD_NAME, TRUE);
+ &img_src_template_factory, GST_BASE_CAMERA_SRC_IMAGE_PAD_NAME, TRUE);
src->imgsrc->negotiate = gst_droidcamsrc_imgsrc_negotiate;
src->vidsrc = gst_droidcamsrc_create_pad (src,
- GST_BASE_CAMERA_SRC_VIDEO_PAD_NAME, TRUE);
+ &vid_src_template_factory, GST_BASE_CAMERA_SRC_VIDEO_PAD_NAME, TRUE);
src->vidsrc->adjust_segment = TRUE;
src->vidsrc->negotiate = gst_droidcamsrc_vidsrc_negotiate;
@@ -296,10 +288,6 @@
g_value_set_pointer (value, supported_image_modes);
break;
- case PROP_TARGET_BITRATE:
- g_value_set_int (value, src->target_bitrate);
- break;
-
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -396,10 +384,6 @@
gst_droidcamsrc_apply_mode_settings (src, SET_AND_APPLY);
break;
- case PROP_TARGET_BITRATE:
- src->target_bitrate = g_value_get_int (value);
- break;
-
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -923,8 +907,6 @@
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- GstCaps *caps;
- GstPadTemplate *tpl;
gobject_class = (GObjectClass *) klass;
gstelement_class = (GstElementClass *) klass;
@@ -939,18 +921,8 @@
gst_element_class_add_pad_template (gstelement_class,
gst_static_pad_template_get (&img_src_template_factory));
- /* encoded caps */
- caps = gst_droid_codec_get_all_caps (GST_DROID_CODEC_ENCODER_VIDEO);
-
- /* add raw caps */
- caps =
- gst_caps_merge (caps,
- gst_caps_from_string (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
- (GST_CAPS_FEATURE_MEMORY_DROID_VIDEO_META_DATA, "{YV12}")));
- tpl =
- gst_pad_template_new (GST_BASE_CAMERA_SRC_VIDEO_PAD_NAME, GST_PAD_SRC,
- GST_PAD_ALWAYS, caps);
- gst_element_class_add_pad_template (gstelement_class, tpl);
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&vid_src_template_factory));
gobject_class->set_property = gst_droidcamsrc_set_property;
gobject_class->get_property = gst_droidcamsrc_get_property;
@@ -1042,11 +1014,6 @@
"Image modes supported by HAL",
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_TARGET_BITRATE,
- g_param_spec_int ("target-bitrate", "Target Bitrate",
- "Target bitrate", 0, G_MAXINT,
- DEFAULT_TARGET_BITRATE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
gst_droidcamsrc_photography_add_overrides (gobject_class);
/* Signals */
@@ -1426,7 +1393,7 @@
} else if (data == src->imgsrc) {
caps = gst_droidcamsrc_params_get_image_caps (src->dev->params);
} else if (data == src->vidsrc) {
- caps = gst_droidcamsrc_get_video_caps_locked (src);
+ caps = gst_droidcamsrc_params_get_video_caps (src->dev->params);
}
} else {
caps = gst_pad_get_pad_template_caps (data->pad);
@@ -1666,7 +1633,7 @@
GST_DEBUG_OBJECT (src, "vidsrc negotiate");
- our_caps = gst_droidcamsrc_get_video_caps_locked (src);
+ our_caps = gst_droidcamsrc_params_get_video_caps (src->dev->params);
GST_DEBUG_OBJECT (src, "our caps %" GST_PTR_FORMAT, our_caps);
if (!our_caps || gst_caps_is_empty (our_caps)) {
@@ -1727,16 +1694,6 @@
ret = TRUE;
- if (info.finfo->format == GST_VIDEO_FORMAT_ENCODED) {
- GST_INFO_OBJECT (src, "using external recorder");
- src->dev->use_recorder = TRUE;
- } else {
- GST_INFO_OBJECT (src, "using raw recorder");
- src->dev->use_recorder = FALSE;
- }
-
- gst_droidcamsrc_recorder_update_vid (src->dev->recorder, &info, our_caps);
-
out:
if (peer) {
gst_caps_unref (peer);
@@ -2314,58 +2271,3 @@
GST_INFO_OBJECT (src, "zsl and hdr supported: %d", ret);
return ret;
}
-
-static GstCaps *
-gst_droidcamsrc_get_video_caps_locked (GstDroidCamSrc * src)
-{
- struct Data
- {
- GstCaps *result;
- GstStructure *encoded;
- };
-
- gboolean __map (GstCapsFeatures * features,
- GstStructure * structure, struct Data *data)
- {
-
- /* Given structure from template caps, we need to transform Data::encoded */
- int i;
- GstStructure *s = gst_structure_copy (data->encoded);
- for (i = 0; i < gst_structure_n_fields (structure); i++) {
- const gchar *field = gst_structure_nth_field_name (structure, i);
- /* skip format field */
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcamsrc/gstdroidcamsrc.h
^
|
@@ -120,8 +120,6 @@
gfloat max_ev_compensation;
gfloat ev_step;
- gint32 target_bitrate;
-
/* protected with OBJECT_LOCK */
gint width;
gint height;
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcamsrc/gstdroidcamsrcdev.c
^
|
@@ -26,7 +26,6 @@
#include "gstdroidcamsrcdev.h"
#include <stdlib.h>
#include "gstdroidcamsrc.h"
-#include "gstdroidcamsrcrecorder.h"
#include "gst/droid/gstdroidmediabuffer.h"
#include "gst/droid/gstwrappedmemory.h"
#include "gst/droid/gstdroidbufferpool.h"
@@ -74,13 +73,6 @@
static void
gst_droidcamsrc_dev_prepare_buffer (GstDroidCamSrcDev * dev, GstBuffer * buffer,
DroidMediaRect rect, int width, int height, GstVideoFormat format);
-static gboolean
-gst_droidcamsrc_dev_start_video_recording_recorder_locked (GstDroidCamSrcDev *
- dev);
-static gboolean
-gst_droidcamsrc_dev_start_video_recording_raw_locked (GstDroidCamSrcDev * dev);
-static void gst_droidcamsrc_dev_queue_video_buffer_locked (GstDroidCamSrcDev *
- dev, GstBuffer * buffer);
static void
gst_droidcamsrc_dev_shutter_callback (void *user)
@@ -317,6 +309,7 @@
GstBuffer *buffer;
GstMemory *mem;
GstDroidCamSrcDevVideoData *mem_data;
+ gboolean drop_buffer;
GST_DEBUG_OBJECT (src, "dev video frame callback");
@@ -342,12 +335,26 @@
(GFunc) gst_droidcamsrc_dev_release_recording_frame, mem_data);
gst_buffer_insert_memory (buffer, 0, mem);
+ GST_BUFFER_OFFSET (buffer) = dev->vid->video_frames;
+ GST_BUFFER_OFFSET_END (buffer) = ++dev->vid->video_frames;
gst_droidcamsrc_timestamp (src, buffer);
- gst_droidcamsrc_dev_queue_video_buffer_locked (dev, buffer);
+ g_rec_mutex_lock (dev->lock);
+ ++dev->vid->queued_frames;
+ g_rec_mutex_unlock (dev->lock);
- g_mutex_unlock (&dev->vid->lock);
- return;
+ drop_buffer = !dev->vid->running;
+
+ if (drop_buffer) {
+ GST_INFO_OBJECT (src,
+ "dropping buffer because video recording is not running");
+ gst_buffer_unref (buffer);
+ } else {
+ g_mutex_lock (&dev->vidsrc->lock);
+ g_queue_push_tail (dev->vidsrc->queue, buffer);
+ g_cond_signal (&dev->vidsrc->cond);
+ g_mutex_unlock (&dev->vidsrc->lock);
+ }
unlock_and_out:
/* in case stop_video_recording() is waiting for us */
@@ -536,9 +543,6 @@
dev->pool = gst_droid_buffer_pool_new ();
- dev->use_recorder = FALSE;
- dev->recorder = gst_droidcamsrc_recorder_create (vidsrc);
-
droid_media_camera_constants_init (&dev->c);
return dev;
@@ -620,8 +624,6 @@
gst_object_unref (dev->pool);
- gst_droidcamsrc_recorder_destroy (dev->recorder);
-
g_slice_free (GstDroidCamSrcImageCaptureState, dev->img);
g_slice_free (GstDroidCamSrcVideoCaptureState, dev->vid);
g_slice_free (GstDroidCamSrcDev, dev);
@@ -871,14 +873,18 @@
dev->vid->video_frames = 0;
dev->vid->queued_frames = 0;
- if (dev->use_recorder) {
- ret = gst_droidcamsrc_dev_start_video_recording_recorder_locked (dev);
- } else {
- ret = gst_droidcamsrc_dev_start_video_recording_raw_locked (dev);
+ /* TODO: get that from caps */
+ if (!droid_media_camera_store_meta_data_in_buffers (dev->cam, true)) {
+ GST_ELEMENT_ERROR (src, LIBRARY, SETTINGS,
+ ("error storing meta data in buffers for video recording"), (NULL));
+ goto out;
}
- if (!ret)
+ if (!droid_media_camera_start_recording (dev->cam)) {
+ GST_ELEMENT_ERROR (src, LIBRARY, FAILED, ("error starting video recording"),
+ (NULL));
goto out;
+ }
ret = TRUE;
@@ -925,28 +931,21 @@
GST_ERROR ("failed to push EOS event");
}
- if (!dev->use_recorder) {
- g_rec_mutex_lock (dev->lock);
-
- GST_INFO ("waiting for queued frames %i", dev->vid->queued_frames);
+ g_rec_mutex_lock (dev->lock);
- while (dev->vid->queued_frames > 0) {
- GST_INFO ("waiting for queued frames to reach 0 from %i",
- dev->vid->queued_frames);
- g_rec_mutex_unlock (dev->lock);
- usleep (VIDEO_RECORDING_STOP_TIMEOUT);
- g_rec_mutex_lock (dev->lock);
- }
+ GST_INFO ("waiting for queued frames %i", dev->vid->queued_frames);
- /* TODO: move this unlock() call after we stop recording? */
+ while (dev->vid->queued_frames > 0) {
+ GST_INFO ("waiting for queued frames to reach 0 from %i",
+ dev->vid->queued_frames);
g_rec_mutex_unlock (dev->lock);
+ usleep (VIDEO_RECORDING_STOP_TIMEOUT);
+ g_rec_mutex_lock (dev->lock);
}
- if (dev->use_recorder) {
- gst_droidcamsrc_recorder_stop (dev->recorder);
- } else {
- droid_media_camera_stop_recording (dev->cam);
- }
+ g_rec_mutex_unlock (dev->lock);
+
+ droid_media_camera_stop_recording (dev->cam);
gst_buffer_pool_set_flushing (dev->pool, FALSE);
@@ -1139,86 +1138,3 @@
GST_LOG_OBJECT (src, "preview info: w=%d, h=%d, crop: x=%d, y=%d, w=%d, h=%d",
width, height, crop->x, crop->y, crop->width, crop->height);
}
-
-static gboolean
-gst_droidcamsrc_dev_start_video_recording_recorder_locked (GstDroidCamSrcDev *
- dev)
-{
- GstDroidCamSrc *src = GST_DROIDCAMSRC (GST_PAD_PARENT (dev->imgsrc->pad));
-
- if (!gst_droidcamsrc_recorder_init (dev->recorder, dev->cam,
- src->target_bitrate)) {
- GST_ELEMENT_ERROR (src, LIBRARY, FAILED,
- ("error initializing video recorder"), (NULL));
- return FALSE;
- }
-
- if (!gst_droidcamsrc_recorder_start (dev->recorder)) {
- GST_ELEMENT_ERROR (src, LIBRARY, FAILED, ("error starting video recorder"),
- (NULL));
- return FALSE;
- }
-
- return TRUE;
-}
-
-static gboolean
-gst_droidcamsrc_dev_start_video_recording_raw_locked (GstDroidCamSrcDev * dev)
-{
- GstDroidCamSrc *src = GST_DROIDCAMSRC (GST_PAD_PARENT (dev->imgsrc->pad));
-
- /* TODO: get that from caps */
- if (!droid_media_camera_store_meta_data_in_buffers (dev->cam, true)) {
- GST_ELEMENT_ERROR (src, LIBRARY, SETTINGS,
- ("error storing meta data in buffers for video recording"), (NULL));
- return FALSE;
- }
-
- if (!droid_media_camera_start_recording (dev->cam)) {
- GST_ELEMENT_ERROR (src, LIBRARY, FAILED, ("error starting video recording"),
- (NULL));
- return FALSE;
- }
-
- return TRUE;
-}
-
-void
-gst_droidcamsrc_dev_queue_video_buffer (GstDroidCamSrcDev * dev,
- GstBuffer * buffer)
-{
- g_mutex_lock (&dev->vid->lock);
- gst_droidcamsrc_dev_queue_video_buffer_locked (dev, buffer);
- g_mutex_unlock (&dev->vid->lock);
-}
-
-static void
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcamsrc/gstdroidcamsrcdev.h
^
|
@@ -2,7 +2,7 @@
* gst-droid
*
* Copyright (C) 2014 Mohammed Sameer <msameer@foolab.org>
- * Copyright (C) 2015-2016 Jolla LTD.
+ * Copyright (C) 2015 Jolla LTD.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -34,7 +34,6 @@
typedef struct _GstDroidCamSrcVideoCaptureState GstDroidCamSrcVideoCaptureState;
typedef struct _GstDroidCamSrcCamInfo GstDroidCamSrcCamInfo;
typedef struct _GstDroidCamSrcPad GstDroidCamSrcPad;
-typedef struct _GstDroidCamSrcRecorder GstDroidCamSrcRecorder;
struct _GstDroidCamSrcDev
{
@@ -54,9 +53,6 @@
GstDroidCamSrcVideoCaptureState *vid;
GstBufferPool *pool;
DroidMediaCameraConstants c;
-
- gboolean use_recorder;
- GstDroidCamSrcRecorder *recorder;
};
GstDroidCamSrcDev *gst_droidcamsrc_dev_new (GstDroidCamSrcPad *vfsrc,
@@ -92,8 +88,6 @@
gboolean gst_droidcamsrc_dev_is_running (GstDroidCamSrcDev * dev);
-void gst_droidcamsrc_dev_queue_video_buffer (GstDroidCamSrcDev * dev, GstBuffer * buffer);
-
G_END_DECLS
#endif /* __GST_DROIDCAMSRC_DEV_H__ */
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcamsrc/gstdroidcamsrcphotography.h
^
|
@@ -46,7 +46,6 @@
PROP_IMAGE_NOISE_REDUCTION,
PROP_SENSOR_ORIENTATION,
PROP_SENSOR_MOUNT_ANGLE,
- PROP_TARGET_BITRATE,
/* photography interface */
PROP_WB_MODE,
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcodec/Makefile.am
^
|
@@ -10,11 +10,13 @@
libgstdroidcodec_la_SOURCES = \
gstdroidvdec.c \
gstdroidvenc.c \
+ gstdroidcodec.c \
gstdroidadec.c \
gstdroidaenc.c
noinst_HEADERS = \
gstdroidvdec.h \
gstdroidvenc.h \
+ gstdroidcodec.h \
gstdroidadec.h \
gstdroidaenc.h
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcodec/gstdroidadec.h
^
|
@@ -25,7 +25,7 @@
#include <gst/gst.h>
#include <gst/audio/gstaudiodecoder.h>
#include <gst/base/gstadapter.h>
-#include "gst/droid/gstdroidcodec.h"
+#include "gstdroidcodec.h"
G_BEGIN_DECLS
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcodec/gstdroidaenc.h
^
|
@@ -23,7 +23,7 @@
#include <gst/gst.h>
#include <gst/audio/gstaudioencoder.h>
-#include "gst/droid/gstdroidcodec.h"
+#include "gstdroidcodec.h"
G_BEGIN_DECLS
|
[-]
[+]
|
Added |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcodec/gstdroidcodec.c
^
|
@@ -0,0 +1,1124 @@
+/*
+ * gst-droid
+ *
+ * Copyright (C) 2014-2015 Mohammed Sameer <msameer@foolab.org>
+ * Copyright (C) 2015 Jolla LTD.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "gstdroidcodec.h"
+#include "plugin.h"
+#include <glib.h>
+#include <gst/base/gstbytewriter.h>
+#ifndef GST_USE_UNSTABLE_API
+#define GST_USE_UNSTABLE_API
+#endif /* GST_USE_UNSTABLE_API */
+#include <gst/codecparsers/gsth264parser.h>
+
+GST_DEBUG_CATEGORY_EXTERN (gst_droid_codec_debug);
+#define GST_CAT_DEFAULT gst_droid_codec_debug
+
+static GstBuffer *create_mpeg4venc_codec_data (DroidMediaData * data);
+static GstBuffer *create_h264enc_codec_data (DroidMediaData * data);
+static gboolean create_mpeg4vdec_codec_data_from_codec_data (GstDroidCodec *
+ codec, GstBuffer * data, DroidMediaData * out);
+static gboolean create_h264dec_codec_data_from_codec_data (GstDroidCodec *
+ codec, GstBuffer * data, DroidMediaData * out);
+static gboolean create_vp8vdec_codec_data_from_codec_data (GstDroidCodec *
+ codec, GstBuffer * data, DroidMediaData * out);
+static gboolean create_aacdec_codec_data_from_codec_data (GstDroidCodec * codec,
+ GstBuffer * data, DroidMediaData * out);
+static gboolean create_aacdec_codec_data_from_frame_data (GstDroidCodec * codec,
+ GstBuffer * frame_data, DroidMediaData * out);
+static gboolean process_h264dec_data (GstDroidCodec * codec, GstBuffer * buffer,
+ DroidMediaData * out);
+static gboolean process_aacdec_data (GstDroidCodec * codec, GstBuffer * buffer,
+ 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);
+static gboolean process_h264enc_data (DroidMediaData * in,
+ DroidMediaData * out);
+static void gst_droid_codec_release_input_frame (void *data);
+static void gst_droid_codec_free (GstDroidCodec * codec);
+static void gst_droid_codec_type_fill_quirks (GstDroidCodec * codec);
+
+GST_DEFINE_MINI_OBJECT_TYPE (GstDroidCodec, gst_droid_codec);
+
+typedef struct
+{
+ gpointer data;
+} GstDroidCodecFrameReleaseData;
+
+struct _GstDroidCodecPrivate
+{
+ guint h264_nal;
+ gboolean aac_adts;
+};
+
+struct _GstDroidCodecInfo
+{
+ GstDroidCodecType type;
+ const gchar *mime;
+ const gchar *droid;
+ const gchar *caps;
+ gboolean enabled;
+
+ gboolean (*validate_structure) (GstDroidCodec * codec,
+ const GstStructure * s);
+ void (*complement_caps) (GstCaps * caps);
+ GstBuffer *(*create_encoder_codec_data) (DroidMediaData * data);
+ gboolean (*process_encoder_data) (DroidMediaData * in,
+ DroidMediaData * out);
+ gboolean (*create_decoder_codec_data_from_codec_data) (GstDroidCodec *
+ codec, GstBuffer * codec_data, DroidMediaData * out);
+ gboolean (*create_decoder_codec_data_from_frame_data) (GstDroidCodec *
+ codec, GstBuffer * frame_data, DroidMediaData * out);
+ gboolean (*process_decoder_data) (GstDroidCodec * codec, GstBuffer * buffer,
+ DroidMediaData * out);
+};
+
+/* codecs */
+#define CAPS_FRAGMENT_AUDIO_ENCODER \
+ " , channels = (int) [1, 2]"
+
+static GstDroidCodecInfo codecs[] = {
+ /* audio decoders */
+ {GST_DROID_CODEC_DECODER_AUDIO, "audio/mpeg", "audio/mp4a-latm",
+ "audio/mpeg, mpegversion=(int){2, 4}, stream-format=(string){raw, adts}",
+ TRUE,
+ 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,
+ is_mpeg4v, NULL, NULL, NULL,
+ create_mpeg4vdec_codec_data_from_codec_data, NULL, NULL},
+
+ {GST_DROID_CODEC_DECODER_VIDEO, "video/x-h264", "video/avc",
+ "video/x-h264, stream-format=avc,alignment=au", TRUE,
+ is_h264_dec, NULL, NULL, NULL,
+ create_h264dec_codec_data_from_codec_data, NULL, process_h264dec_data},
+
+ {GST_DROID_CODEC_DECODER_VIDEO, "video/x-h263", "video/3gpp",
+ "video/x-h263", TRUE, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL},
+
+ {GST_DROID_CODEC_DECODER_VIDEO, "video/x-vp8", "video/x-vnd.on2.vp8",
+ "video/x-vp8", FALSE, NULL, NULL, NULL, NULL,
+ create_vp8vdec_codec_data_from_codec_data, NULL, NULL},
+
+ /* audio encoders */
+ {GST_DROID_CODEC_ENCODER_AUDIO, "audio/mpeg", "audio/mp4a-latm",
+ "audio/mpeg, mpegversion=(int)4, stream-format=(string){raw}"
+ CAPS_FRAGMENT_AUDIO_ENCODER, TRUE,
+ is_mpeg4v, NULL, create_mpeg4venc_codec_data, NULL, NULL, NULL, NULL},
+
+ /* video encoders */
+ {GST_DROID_CODEC_ENCODER_VIDEO, "video/mpeg", "video/mp4v-es",
+ "video/mpeg, mpegversion=4, systemstream=false", TRUE,
+ is_mpeg4v, NULL, create_mpeg4venc_codec_data, NULL, NULL, NULL, NULL},
+
+ {GST_DROID_CODEC_ENCODER_VIDEO, "video/x-h264", "video/avc",
+ "video/x-h264, stream-format=avc,alignment=au", TRUE,
+ is_h264_enc, h264enc_complement, create_h264enc_codec_data,
+ process_h264enc_data, NULL, NULL, NULL},
+};
+
+GstDroidCodec *
+gst_droid_codec_new_from_caps (GstCaps * caps, GstDroidCodecType type)
+{
+ int x = 0;
+ int len = G_N_ELEMENTS (codecs);
+ GstStructure *s = gst_caps_get_structure (caps, 0);
+ const gchar *name = gst_structure_get_name (s);
+ GstDroidCodec *codec = g_slice_new (GstDroidCodec);
+ codec->data = g_slice_new0 (GstDroidCodecPrivate);
+
+ for (x = 0; x < len; x++) {
+ if (codecs[x].type != type) {
+ continue;
+ }
+
+ gboolean is_equal = g_strcmp0 (codecs[x].mime, name) == 0;
+ if (!is_equal) {
+ continue;
+ }
+
+ if (!codecs[x].validate_structure
+ || codecs[x].validate_structure (codec, s)) {
+ gst_mini_object_init (GST_MINI_OBJECT_CAST (codec), 0,
+ gst_droid_codec_get_type (), NULL, NULL,
+ (GstMiniObjectFreeFunction) gst_droid_codec_free);
+
+ codec->info = &codecs[x];
+
+ /* Fill codec quirks */
+ gst_droid_codec_type_fill_quirks (codec);
+
+ return codec;
+ }
+ }
+
+ gst_droid_codec_free (codec);
+
+ return NULL;
+}
+
+GstCaps *
+gst_droid_codec_get_all_caps (GstDroidCodecType type)
+{
+ GstCaps *caps = gst_caps_new_empty ();
+ int x = 0;
+ int len = G_N_ELEMENTS (codecs);
+ GKeyFile *file = g_key_file_new ();
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcodec/gstdroidcodec.h
^
|
(renamed from gst-libs/gst/droid/gstdroidcodec.h)
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcodec/gstdroidvdec.h
^
|
@@ -24,7 +24,7 @@
#include <gst/gst.h>
#include <gst/video/gstvideodecoder.h>
-#include "gst/droid/gstdroidcodec.h"
+#include "gstdroidcodec.h"
#include "droidmediaconvert.h"
G_BEGIN_DECLS
|
[-]
[+]
|
Changed |
_service:tar_git:gstreamer1.0-droid-0.20161124.0.tar.gz/gst/droidcodec/gstdroidvenc.h
^
|
@@ -23,7 +23,7 @@
#include <gst/gst.h>
#include <gst/video/gstvideoencoder.h>
-#include "gst/droid/gstdroidcodec.h"
+#include "gstdroidcodec.h"
G_BEGIN_DECLS
|