Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(483)

Side by Side Diff: media/omx/omx_configurator.h

Issue 7066071: Removing defunct OpenMAX code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: removed tab Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/omx/omx_codec_unittest.cc ('k') | media/omx/omx_configurator.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. Use of this
2 // source code is governed by a BSD-style license that can be found in the
3 // LICENSE file.
4
5 #ifndef MEDIA_OMX_OMX_CONFIGURATOR_H_
6 #define MEDIA_OMX_OMX_CONFIGURATOR_H_
7
8 #include <string>
9
10 #include "base/basictypes.h"
11 #include "third_party/openmax/il/OMX_Component.h"
12 #include "third_party/openmax/il/OMX_Core.h"
13 #include "third_party/openmax/il/OMX_Video.h"
14
15 namespace media {
16
17 class OmxConfigurator {
18 public:
19 enum Codec {
20 kCodecNone,
21 kCodecH264,
22 kCodecMpeg4,
23 kCodecH263,
24 kCodecVc1,
25 kCodecRaw,
26 };
27
28 // TODO(jiesun): figure out what other surface formats are.
29 enum SurfaceFormat {
30 kSurfaceFormatNV21,
31 kSurfaceFormatNV21Tiled,
32 kSurfaceFormatNV12,
33 };
34
35 struct MediaFormatVideoHeader {
36 int width;
37 int height;
38 int stride; // n/a to compressed stream.
39 int frame_rate;
40 int bit_rate; // n/a to raw stream.
41 int profile; // n/a to raw stream.
42 int level; // n/a to raw stream.
43 int i_dist; // i frame distance; >0 if p frame is enabled.
44 int p_dist; // p frame distance; >0 if b frame is enabled.
45 };
46
47 struct MediaFormatVideoRaw {
48 SurfaceFormat color_space;
49 };
50
51 struct MediaFormatVideoH264 {
52 int slice_enable;
53 int max_ref_frames;
54 int num_ref_l0, num_ref_l1;
55 int cabac_enable;
56 int cabac_init_idc;
57 int deblock_enable;
58 int frame_mbs_only_flags;
59 int mbaff_enable;
60 int bdirect_spatial_temporal;
61 };
62
63 struct MediaFormatVideoMPEG4 {
64 int ac_pred_enable;
65 int time_inc_res;
66 int slice_enable;
67 };
68
69 struct MediaFormat {
70 // TODO(jiesun): instead of codec type, we should have media format.
71 Codec codec;
72 MediaFormatVideoHeader video_header;
73 union {
74 MediaFormatVideoRaw raw;
75 MediaFormatVideoH264 h264;
76 MediaFormatVideoMPEG4 mpeg4;
77 };
78 };
79
80 OmxConfigurator(const MediaFormat& input,
81 const MediaFormat& output)
82 : input_format_(input),
83 output_format_(output) {
84 }
85
86 virtual ~OmxConfigurator() {}
87
88 // Returns the role name for this configuration.
89 virtual std::string GetRoleName() const = 0;
90
91 // Called by OmxCodec on the message loop given to it during
92 // transition to idle state.
93 // OmxCodec reads the current IO port definitions and pass it to this
94 // method.
95 // Returns true if configuration has completed successfully.
96 virtual bool ConfigureIOPorts(
97 OMX_COMPONENTTYPE* component,
98 OMX_PARAM_PORTDEFINITIONTYPE* input_port_def,
99 OMX_PARAM_PORTDEFINITIONTYPE* output_port_def) const = 0;
100
101 const MediaFormat& input_format() const { return input_format_; }
102 const MediaFormat& output_format() const { return output_format_; }
103
104 private:
105 MediaFormat input_format_;
106 MediaFormat output_format_;
107
108 private:
109 DISALLOW_COPY_AND_ASSIGN(OmxConfigurator);
110 };
111
112 class OmxDecoderConfigurator : public OmxConfigurator {
113 public:
114 OmxDecoderConfigurator(const MediaFormat& input,
115 const MediaFormat& output)
116 : OmxConfigurator(input, output) {
117 }
118
119 virtual ~OmxDecoderConfigurator() {}
120
121 virtual std::string GetRoleName() const;
122
123 virtual bool ConfigureIOPorts(
124 OMX_COMPONENTTYPE* component,
125 OMX_PARAM_PORTDEFINITIONTYPE* input_port_def,
126 OMX_PARAM_PORTDEFINITIONTYPE* output_port_def) const;
127
128 private:
129 DISALLOW_COPY_AND_ASSIGN(OmxDecoderConfigurator);
130 };
131
132 class OmxEncoderConfigurator : public OmxConfigurator {
133 public:
134 OmxEncoderConfigurator(const MediaFormat& input,
135 const MediaFormat& output)
136 : OmxConfigurator(input, output) {
137 }
138
139 virtual ~OmxEncoderConfigurator() {}
140
141 virtual std::string GetRoleName() const;
142
143 virtual bool ConfigureIOPorts(
144 OMX_COMPONENTTYPE* component,
145 OMX_PARAM_PORTDEFINITIONTYPE* input_port_def,
146 OMX_PARAM_PORTDEFINITIONTYPE* output_port_def) const;
147
148 private:
149 DISALLOW_COPY_AND_ASSIGN(OmxEncoderConfigurator);
150 };
151
152 } // namespace media
153
154 #endif // MEDIA_OMX_OMX_CONFIGURATOR_H_
OLDNEW
« no previous file with comments | « media/omx/omx_codec_unittest.cc ('k') | media/omx/omx_configurator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698