~phablet-team/+junk/qtmultimedia-declarative-playlist

« back to all changes in this revision

Viewing changes to src/plugins/wmf/mfglobal.cpp

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2013-05-23 19:47:12 UTC
  • mfrom: (1.1.1) (7.1.2 saucy-proposed)
  • Revision ID: package-import@ubuntu.com-20130523194712-ng8dawnyetljbjkv
Tags: 5.0.2-2ubuntu2
Update libqt5multimedia5.symbols for qreal substitutions for armhf.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
**
 
3
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
 
4
** Contact: http://www.qt-project.org/legal
 
5
**
 
6
** This file is part of the Qt Toolkit.
 
7
**
 
8
** $QT_BEGIN_LICENSE:LGPL$
 
9
** Commercial License Usage
 
10
** Licensees holding valid commercial Qt licenses may use this file in
 
11
** accordance with the commercial license agreement provided with the
 
12
** Software or, alternatively, in accordance with the terms contained in
 
13
** a written agreement between you and Digia.  For licensing terms and
 
14
** conditions see http://qt.digia.com/licensing.  For further information
 
15
** use the contact form at http://qt.digia.com/contact-us.
 
16
**
 
17
** GNU Lesser General Public License Usage
 
18
** Alternatively, this file may be used under the terms of the GNU Lesser
 
19
** General Public License version 2.1 as published by the Free Software
 
20
** Foundation and appearing in the file LICENSE.LGPL included in the
 
21
** packaging of this file.  Please review the following information to
 
22
** ensure the GNU Lesser General Public License version 2.1 requirements
 
23
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 
24
**
 
25
** In addition, as a special exception, Digia gives you certain additional
 
26
** rights.  These rights are described in the Digia Qt LGPL Exception
 
27
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 
28
**
 
29
** GNU General Public License Usage
 
30
** Alternatively, this file may be used under the terms of the GNU
 
31
** General Public License version 3.0 as published by the Free Software
 
32
** Foundation and appearing in the file LICENSE.GPL included in the
 
33
** packaging of this file.  Please review the following information to
 
34
** ensure the GNU General Public License version 3.0 requirements will be
 
35
** met: http://www.gnu.org/copyleft/gpl.html.
 
36
**
 
37
**
 
38
** $QT_END_LICENSE$
 
39
**
 
40
****************************************************************************/
 
41
 
 
42
#include "mfglobal.h"
 
43
 
 
44
HRESULT qt_wmf_getFourCC(IMFMediaType *type, DWORD *fourCC)
 
45
{
 
46
    if (!fourCC)
 
47
        return E_POINTER;
 
48
 
 
49
    HRESULT hr = S_OK;
 
50
    GUID guidSubType = GUID_NULL;
 
51
 
 
52
    if (SUCCEEDED(hr))
 
53
        hr = type->GetGUID(MF_MT_SUBTYPE, &guidSubType);
 
54
 
 
55
    if (SUCCEEDED(hr))
 
56
        *fourCC = guidSubType.Data1;
 
57
 
 
58
    return hr;
 
59
}
 
60
 
 
61
MFRatio qt_wmf_getPixelAspectRatio(IMFMediaType *type)
 
62
{
 
63
    MFRatio ratio = { 0, 0 };
 
64
    HRESULT hr = S_OK;
 
65
 
 
66
    hr = MFGetAttributeRatio(type, MF_MT_PIXEL_ASPECT_RATIO, (UINT32*)&ratio.Numerator, (UINT32*)&ratio.Denominator);
 
67
    if (FAILED(hr)) {
 
68
        ratio.Numerator = 1;
 
69
        ratio.Denominator = 1;
 
70
    }
 
71
    return ratio;
 
72
}
 
73
 
 
74
bool qt_wmf_areMediaTypesEqual(IMFMediaType *type1, IMFMediaType *type2)
 
75
{
 
76
    if (!type1 && !type2)
 
77
        return true;
 
78
    else if (!type1 || !type2)
 
79
        return false;
 
80
 
 
81
    DWORD dwFlags = 0;
 
82
    HRESULT hr = type1->IsEqual(type2, &dwFlags);
 
83
 
 
84
    return (hr == S_OK);
 
85
}
 
86
 
 
87
HRESULT qt_wmf_validateVideoArea(const MFVideoArea& area, UINT32 width, UINT32 height)
 
88
{
 
89
    float fOffsetX = qt_wmf_MFOffsetToFloat(area.OffsetX);
 
90
    float fOffsetY = qt_wmf_MFOffsetToFloat(area.OffsetY);
 
91
 
 
92
    if ( ((LONG)fOffsetX + area.Area.cx > (LONG)width) ||
 
93
         ((LONG)fOffsetY + area.Area.cy > (LONG)height) )
 
94
        return MF_E_INVALIDMEDIATYPE;
 
95
    else
 
96
        return S_OK;
 
97
}
 
98
 
 
99
bool qt_wmf_isSampleTimePassed(IMFClock *clock, IMFSample *sample)
 
100
{
 
101
    if (!sample || !clock)
 
102
        return false;
 
103
 
 
104
    HRESULT hr = S_OK;
 
105
    MFTIME hnsTimeNow = 0;
 
106
    MFTIME hnsSystemTime = 0;
 
107
    MFTIME hnsSampleStart = 0;
 
108
    MFTIME hnsSampleDuration = 0;
 
109
 
 
110
    hr = clock->GetCorrelatedTime(0, &hnsTimeNow, &hnsSystemTime);
 
111
 
 
112
    if (SUCCEEDED(hr))
 
113
        hr = sample->GetSampleTime(&hnsSampleStart);
 
114
 
 
115
    if (SUCCEEDED(hr))
 
116
        hr = sample->GetSampleDuration(&hnsSampleDuration);
 
117
 
 
118
    if (SUCCEEDED(hr)) {
 
119
        if (hnsSampleStart + hnsSampleDuration < hnsTimeNow)
 
120
            return true;
 
121
    }
 
122
 
 
123
    return false;
 
124
}