FreeRDP
|
#include <freerdp/config.h>
#include <winpr/assert.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <winpr/string.h>
#include <winpr/platform.h>
#include <gst/gst.h>
#include <gst/app/gstappsrc.h>
#include <gst/app/gstappsink.h>
#include "tsmf_constants.h"
#include "tsmf_decoder.h"
#include "tsmf_platform.h"
Macros | |
#define | SEEK_TOLERANCE 10 * 1000 * 1000 |
Functions | |
static BOOL | tsmf_gstreamer_pipeline_build (TSMFGstreamerDecoder *mdecoder) |
static void | tsmf_gstreamer_clean_up (TSMFGstreamerDecoder *mdecoder) |
static int | tsmf_gstreamer_pipeline_set_state (TSMFGstreamerDecoder *mdecoder, GstState desired_state) |
static BOOL | tsmf_gstreamer_buffer_level (ITSMFDecoder *decoder) |
static const char * | get_type (TSMFGstreamerDecoder *mdecoder) |
static void | cb_child_added (GstChildProxy *child_proxy, GObject *object, TSMFGstreamerDecoder *mdecoder) |
static void | tsmf_gstreamer_enough_data (GstAppSrc *src, gpointer user_data) |
static void | tsmf_gstreamer_need_data (GstAppSrc *src, guint length, gpointer user_data) |
static gboolean | tsmf_gstreamer_seek_data (GstAppSrc *src, guint64 offset, gpointer user_data) |
static BOOL | tsmf_gstreamer_change_volume (ITSMFDecoder *decoder, UINT32 newVolume, UINT32 muted) |
static GstClockTime | tsmf_gstreamer_timestamp_ms_to_gst (UINT64 ms_timestamp) |
static GstBuffer * | tsmf_get_buffer_from_data (const void *raw_data, gsize size) |
static BOOL | tsmf_gstreamer_set_format (ITSMFDecoder *decoder, TS_AM_MEDIA_TYPE *media_type) |
static BOOL | tsmf_gstreamer_decodeEx (ITSMFDecoder *decoder, const BYTE *data, UINT32 data_size, UINT32 extensions, UINT64 start_time, UINT64 end_time, UINT64 duration) |
static BOOL | tsmf_gstreamer_control (ITSMFDecoder *decoder, ITSMFControlMsg control_msg, UINT32 *arg) |
static void | tsmf_gstreamer_free (ITSMFDecoder *decoder) |
static UINT64 | tsmf_gstreamer_get_running_time (ITSMFDecoder *decoder) |
static BOOL | tsmf_gstreamer_update_rendering_area (ITSMFDecoder *decoder, int newX, int newY, int newWidth, int newHeight, int numRectangles, RDP_RECT *rectangles) |
static BOOL | tsmf_gstreamer_ack (ITSMFDecoder *decoder, BOOL(*cb)(void *, BOOL), void *stream) |
static BOOL | tsmf_gstreamer_sync (ITSMFDecoder *decoder, void(*cb)(void *), void *stream) |
gst_init (NULL, NULL) | |
if (!decoder) return NULL | |
if (tsmf_platform_create(decoder)< 0) | |
Variables | |
decoder = calloc(1, sizeof(TSMFGstreamerDecoder)) | |
decoder iface | SetFormat = tsmf_gstreamer_set_format |
decoder iface | Decode = NULL |
decoder iface | GetDecodedData = NULL |
decoder iface | GetDecodedFormat = NULL |
decoder iface | GetDecodedDimension = NULL |
decoder iface | GetRunningTime = tsmf_gstreamer_get_running_time |
decoder iface | UpdateRenderingArea = tsmf_gstreamer_update_rendering_area |
decoder iface | Free = tsmf_gstreamer_free |
decoder iface | Control = tsmf_gstreamer_control |
decoder iface | DecodeEx = tsmf_gstreamer_decodeEx |
decoder iface | ChangeVolume = tsmf_gstreamer_change_volume |
decoder iface | BufferLevel = tsmf_gstreamer_buffer_level |
decoder iface | SetAckFunc = tsmf_gstreamer_ack |
decoder iface | SetSyncFunc = tsmf_gstreamer_sync |
decoder | paused = FALSE |
decoder | gstVolume = 0.5 |
decoder | gstMuted = FALSE |
decoder | state = GST_STATE_VOID_PENDING |
decoder | last_sample_start_time = 0 |
decoder | last_sample_end_time = 0 |
decoder | seek_offset = 0 |
decoder | seeking = FALSE |
#define SEEK_TOLERANCE 10 * 1000 * 1000 |
|
static |
|
static |
if | ( | ! | decoder | ) |
if | ( | ) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
inlinestatic |
|
static |
decoder iface BufferLevel = tsmf_gstreamer_buffer_level |
decoder iface ChangeVolume = tsmf_gstreamer_change_volume |
decoder iface Control = tsmf_gstreamer_control |
decoder iface DecodeEx = tsmf_gstreamer_decodeEx |
decoder = calloc(1, sizeof(TSMFGstreamerDecoder)) |
decoder iface Free = tsmf_gstreamer_free |
decoder iface GetRunningTime = tsmf_gstreamer_get_running_time |
decoder gstMuted = FALSE |
decoder gstVolume = 0.5 |
decoder last_sample_end_time = 0 |
decoder last_sample_start_time = 0 |
decoder paused = FALSE |
decoder seek_offset = 0 |
decoder seeking = FALSE |
decoder iface SetAckFunc = tsmf_gstreamer_ack |
decoder iface SetFormat = tsmf_gstreamer_set_format |
decoder iface SetSyncFunc = tsmf_gstreamer_sync |
int state = GST_STATE_VOID_PENDING |
decoder iface UpdateRenderingArea = tsmf_gstreamer_update_rendering_area |