~ubuntu-branches/ubuntu/vivid/freerdp/vivid

« back to all changes in this revision

Viewing changes to channels/drdynvc/tsmf/tsmf_decoder.c

  • Committer: Package Import Robot
  • Author(s): Iain Lane
  • Date: 2014-11-11 12:20:50 UTC
  • mfrom: (1.2.5)
  • mto: This revision was merged to the branch mainline in revision 24.
  • Revision ID: package-import@ubuntu.com-20141111122050-7z628f4ab38qxad5
Tags: upstream-1.1.0~git20140921.1.440916e+dfsg1
ImportĀ upstreamĀ versionĀ 1.1.0~git20140921.1.440916e+dfsg1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/**
2
 
 * FreeRDP: A Remote Desktop Protocol client.
3
 
 * Video Redirection Virtual Channel - Decoder
4
 
 *
5
 
 * Copyright 2010-2011 Vic Lee
6
 
 *
7
 
 * Licensed under the Apache License, Version 2.0 (the "License");
8
 
 * you may not use this file except in compliance with the License.
9
 
 * You may obtain a copy of the License at
10
 
 *
11
 
 *     http://www.apache.org/licenses/LICENSE-2.0
12
 
 *
13
 
 * Unless required by applicable law or agreed to in writing, software
14
 
 * distributed under the License is distributed on an "AS IS" BASIS,
15
 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
 
 * See the License for the specific language governing permissions and
17
 
 * limitations under the License.
18
 
 */
19
 
 
20
 
#include <stdio.h>
21
 
#include <stdlib.h>
22
 
#include <string.h>
23
 
#include <freerdp/utils/memory.h>
24
 
#include <freerdp/utils/load_plugin.h>
25
 
 
26
 
#include "drdynvc_types.h"
27
 
#include "tsmf_types.h"
28
 
#include "tsmf_constants.h"
29
 
#include "tsmf_decoder.h"
30
 
 
31
 
static ITSMFDecoder* tsmf_load_decoder_by_name(const char* name, TS_AM_MEDIA_TYPE* media_type)
32
 
{
33
 
        ITSMFDecoder* decoder;
34
 
        TSMF_DECODER_ENTRY entry;
35
 
        char* fullname;
36
 
 
37
 
        if (strrchr(name, '.') != NULL)
38
 
                entry = (TSMF_DECODER_ENTRY) freerdp_load_plugin(name, TSMF_DECODER_EXPORT_FUNC_NAME);
39
 
        else
40
 
        {
41
 
                fullname = xzalloc(strlen(name) + 6);
42
 
                strcpy(fullname, "tsmf_");
43
 
                strcat(fullname, name);
44
 
                entry = (TSMF_DECODER_ENTRY) freerdp_load_plugin(fullname, TSMF_DECODER_EXPORT_FUNC_NAME);
45
 
                xfree(fullname);
46
 
        }
47
 
        if (entry == NULL)
48
 
        {
49
 
                return NULL;
50
 
        }
51
 
 
52
 
        decoder = entry();
53
 
        if (decoder == NULL)
54
 
        {
55
 
                DEBUG_WARN("failed to call export function in %s", name);
56
 
                return NULL;
57
 
        }
58
 
        if (!decoder->SetFormat(decoder, media_type))
59
 
        {
60
 
                decoder->Free(decoder);
61
 
                decoder = NULL;
62
 
        }
63
 
        return decoder;
64
 
}
65
 
 
66
 
ITSMFDecoder* tsmf_load_decoder(const char* name, TS_AM_MEDIA_TYPE* media_type)
67
 
{
68
 
        ITSMFDecoder* decoder;
69
 
 
70
 
        if (name)
71
 
        {
72
 
                decoder = tsmf_load_decoder_by_name(name, media_type);
73
 
        }
74
 
        else
75
 
        {
76
 
                decoder = tsmf_load_decoder_by_name("ffmpeg", media_type);
77
 
        }
78
 
 
79
 
        return decoder;
80
 
}
81