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

Side by Side Diff: talk/media/base/videoframe.h

Issue 1362503003: Use suffixed {uint,int}{8,16,32,64}_t types. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase + revert basictypes.h (to be landed separately just in case of a revert due to unexpected us… Created 5 years, 2 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
« no previous file with comments | « talk/media/base/videoengine_unittest.h ('k') | talk/media/base/videoframe.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2004 Google Inc. 3 * Copyright 2004 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 virtual ~VideoFrame() {} 42 virtual ~VideoFrame() {}
43 43
44 virtual bool InitToBlack(int w, int h, size_t pixel_width, 44 virtual bool InitToBlack(int w, int h, size_t pixel_width,
45 size_t pixel_height, int64_t time_stamp) = 0; 45 size_t pixel_height, int64_t time_stamp) = 0;
46 // Creates a frame from a raw sample with FourCC |format| and size |w| x |h|. 46 // Creates a frame from a raw sample with FourCC |format| and size |w| x |h|.
47 // |h| can be negative indicating a vertically flipped image. 47 // |h| can be negative indicating a vertically flipped image.
48 // |dw| is destination width; can be less than |w| if cropping is desired. 48 // |dw| is destination width; can be less than |w| if cropping is desired.
49 // |dh| is destination height, like |dw|, but must be a positive number. 49 // |dh| is destination height, like |dw|, but must be a positive number.
50 // Returns whether the function succeeded or failed. 50 // Returns whether the function succeeded or failed.
51 51
52 virtual bool Reset(uint32 fourcc, 52 virtual bool Reset(uint32_t fourcc,
53 int w, 53 int w,
54 int h, 54 int h,
55 int dw, 55 int dw,
56 int dh, 56 int dh,
57 uint8* sample, 57 uint8_t* sample,
58 size_t sample_size, 58 size_t sample_size,
59 size_t pixel_width, 59 size_t pixel_width,
60 size_t pixel_height, 60 size_t pixel_height,
61 int64_t time_stamp, 61 int64_t time_stamp,
62 webrtc::VideoRotation rotation, 62 webrtc::VideoRotation rotation,
63 bool apply_rotation) = 0; 63 bool apply_rotation) = 0;
64 64
65 // TODO(guoweis): Remove this once all external implementations are updated. 65 // TODO(guoweis): Remove this once all external implementations are updated.
66 virtual bool Reset(uint32 fourcc, 66 virtual bool Reset(uint32_t fourcc,
67 int w, 67 int w,
68 int h, 68 int h,
69 int dw, 69 int dw,
70 int dh, 70 int dh,
71 uint8* sample, 71 uint8_t* sample,
72 size_t sample_size, 72 size_t sample_size,
73 size_t pixel_width, 73 size_t pixel_width,
74 size_t pixel_height, 74 size_t pixel_height,
75 int64_t time_stamp, 75 int64_t time_stamp,
76 int rotation) { 76 int rotation) {
77 return Reset(fourcc, w, h, dw, dh, sample, sample_size, pixel_width, 77 return Reset(fourcc, w, h, dw, dh, sample, sample_size, pixel_width,
78 pixel_height, time_stamp, 78 pixel_height, time_stamp,
79 static_cast<webrtc::VideoRotation>(rotation), true); 79 static_cast<webrtc::VideoRotation>(rotation), true);
80 } 80 }
81 81
82 // Basic accessors. 82 // Basic accessors.
83 // Note this is the width and height without rotation applied. 83 // Note this is the width and height without rotation applied.
84 virtual size_t GetWidth() const = 0; 84 virtual size_t GetWidth() const = 0;
85 virtual size_t GetHeight() const = 0; 85 virtual size_t GetHeight() const = 0;
86 86
87 size_t GetChromaWidth() const { return (GetWidth() + 1) / 2; } 87 size_t GetChromaWidth() const { return (GetWidth() + 1) / 2; }
88 size_t GetChromaHeight() const { return (GetHeight() + 1) / 2; } 88 size_t GetChromaHeight() const { return (GetHeight() + 1) / 2; }
89 size_t GetChromaSize() const { return GetUPitch() * GetChromaHeight(); } 89 size_t GetChromaSize() const { return GetUPitch() * GetChromaHeight(); }
90 // These can return NULL if the object is not backed by a buffer. 90 // These can return NULL if the object is not backed by a buffer.
91 virtual const uint8 *GetYPlane() const = 0; 91 virtual const uint8_t* GetYPlane() const = 0;
92 virtual const uint8 *GetUPlane() const = 0; 92 virtual const uint8_t* GetUPlane() const = 0;
93 virtual const uint8 *GetVPlane() const = 0; 93 virtual const uint8_t* GetVPlane() const = 0;
94 virtual uint8 *GetYPlane() = 0; 94 virtual uint8_t* GetYPlane() = 0;
95 virtual uint8 *GetUPlane() = 0; 95 virtual uint8_t* GetUPlane() = 0;
96 virtual uint8 *GetVPlane() = 0; 96 virtual uint8_t* GetVPlane() = 0;
97 97
98 virtual int32 GetYPitch() const = 0; 98 virtual int32_t GetYPitch() const = 0;
99 virtual int32 GetUPitch() const = 0; 99 virtual int32_t GetUPitch() const = 0;
100 virtual int32 GetVPitch() const = 0; 100 virtual int32_t GetVPitch() const = 0;
101 101
102 // Returns the handle of the underlying video frame. This is used when the 102 // Returns the handle of the underlying video frame. This is used when the
103 // frame is backed by a texture. The object should be destroyed when it is no 103 // frame is backed by a texture. The object should be destroyed when it is no
104 // longer in use, so the underlying resource can be freed. 104 // longer in use, so the underlying resource can be freed.
105 virtual void* GetNativeHandle() const = 0; 105 virtual void* GetNativeHandle() const = 0;
106 106
107 // Returns the underlying video frame buffer. This function is ok to call 107 // Returns the underlying video frame buffer. This function is ok to call
108 // multiple times, but the returned object will refer to the same memory. 108 // multiple times, but the returned object will refer to the same memory.
109 virtual rtc::scoped_refptr<webrtc::VideoFrameBuffer> GetVideoFrameBuffer() 109 virtual rtc::scoped_refptr<webrtc::VideoFrameBuffer> GetVideoFrameBuffer()
110 const = 0; 110 const = 0;
(...skipping 26 matching lines...) Expand all
137 // In case VideoFrame needs exclusive access of the frame buffer, user can 137 // In case VideoFrame needs exclusive access of the frame buffer, user can
138 // call MakeExclusive() to make sure the frame buffer is exclusively 138 // call MakeExclusive() to make sure the frame buffer is exclusively
139 // accessible to the current object. This might mean a deep copy of the frame 139 // accessible to the current object. This might mean a deep copy of the frame
140 // buffer if it is currently shared by other objects. 140 // buffer if it is currently shared by other objects.
141 virtual bool MakeExclusive() = 0; 141 virtual bool MakeExclusive() = 0;
142 142
143 // Writes the frame into the given frame buffer, provided that it is of 143 // Writes the frame into the given frame buffer, provided that it is of
144 // sufficient size. Returns the frame's actual size, regardless of whether 144 // sufficient size. Returns the frame's actual size, regardless of whether
145 // it was written or not (like snprintf). If there is insufficient space, 145 // it was written or not (like snprintf). If there is insufficient space,
146 // nothing is written. 146 // nothing is written.
147 virtual size_t CopyToBuffer(uint8 *buffer, size_t size) const; 147 virtual size_t CopyToBuffer(uint8_t* buffer, size_t size) const;
148 148
149 // Writes the frame into the given planes, stretched to the given width and 149 // Writes the frame into the given planes, stretched to the given width and
150 // height. The parameter "interpolate" controls whether to interpolate or just 150 // height. The parameter "interpolate" controls whether to interpolate or just
151 // take the nearest-point. The parameter "crop" controls whether to crop this 151 // take the nearest-point. The parameter "crop" controls whether to crop this
152 // frame to the aspect ratio of the given dimensions before stretching. 152 // frame to the aspect ratio of the given dimensions before stretching.
153 virtual bool CopyToPlanes( 153 virtual bool CopyToPlanes(uint8_t* dst_y,
154 uint8* dst_y, uint8* dst_u, uint8* dst_v, 154 uint8_t* dst_u,
155 int32 dst_pitch_y, int32 dst_pitch_u, int32 dst_pitch_v) const; 155 uint8_t* dst_v,
156 int32_t dst_pitch_y,
157 int32_t dst_pitch_u,
158 int32_t dst_pitch_v) const;
156 159
157 // Writes the frame into the target VideoFrame. 160 // Writes the frame into the target VideoFrame.
158 virtual void CopyToFrame(VideoFrame* target) const; 161 virtual void CopyToFrame(VideoFrame* target) const;
159 162
160 // Return a copy of frame which has its pending rotation applied. The 163 // Return a copy of frame which has its pending rotation applied. The
161 // ownership of the returned frame is held by this frame. 164 // ownership of the returned frame is held by this frame.
162 virtual const VideoFrame* GetCopyWithRotationApplied() const = 0; 165 virtual const VideoFrame* GetCopyWithRotationApplied() const = 0;
163 166
164 // Writes the frame into the given stream and returns the StreamResult. 167 // Writes the frame into the given stream and returns the StreamResult.
165 // See webrtc/base/stream.h for a description of StreamResult and error. 168 // See webrtc/base/stream.h for a description of StreamResult and error.
166 // Error may be NULL. If a non-success value is returned from 169 // Error may be NULL. If a non-success value is returned from
167 // StreamInterface::Write(), we immediately return with that value. 170 // StreamInterface::Write(), we immediately return with that value.
168 virtual rtc::StreamResult Write(rtc::StreamInterface* stream, 171 virtual rtc::StreamResult Write(rtc::StreamInterface* stream,
169 int* error) const; 172 int* error) const;
170 173
171 // Converts the I420 data to RGB of a certain type such as ARGB and ABGR. 174 // Converts the I420 data to RGB of a certain type such as ARGB and ABGR.
172 // Returns the frame's actual size, regardless of whether it was written or 175 // Returns the frame's actual size, regardless of whether it was written or
173 // not (like snprintf). Parameters size and stride_rgb are in units of bytes. 176 // not (like snprintf). Parameters size and stride_rgb are in units of bytes.
174 // If there is insufficient space, nothing is written. 177 // If there is insufficient space, nothing is written.
175 virtual size_t ConvertToRgbBuffer(uint32 to_fourcc, uint8 *buffer, 178 virtual size_t ConvertToRgbBuffer(uint32_t to_fourcc,
176 size_t size, int stride_rgb) const; 179 uint8_t* buffer,
180 size_t size,
181 int stride_rgb) const;
177 182
178 // Writes the frame into the given planes, stretched to the given width and 183 // Writes the frame into the given planes, stretched to the given width and
179 // height. The parameter "interpolate" controls whether to interpolate or just 184 // height. The parameter "interpolate" controls whether to interpolate or just
180 // take the nearest-point. The parameter "crop" controls whether to crop this 185 // take the nearest-point. The parameter "crop" controls whether to crop this
181 // frame to the aspect ratio of the given dimensions before stretching. 186 // frame to the aspect ratio of the given dimensions before stretching.
182 virtual void StretchToPlanes( 187 virtual void StretchToPlanes(uint8_t* y,
183 uint8 *y, uint8 *u, uint8 *v, int32 pitchY, int32 pitchU, int32 pitchV, 188 uint8_t* u,
184 size_t width, size_t height, bool interpolate, bool crop) const; 189 uint8_t* v,
190 int32_t pitchY,
191 int32_t pitchU,
192 int32_t pitchV,
193 size_t width,
194 size_t height,
195 bool interpolate,
196 bool crop) const;
185 197
186 // Writes the frame into the target VideoFrame, stretched to the size of that 198 // Writes the frame into the target VideoFrame, stretched to the size of that
187 // frame. The parameter "interpolate" controls whether to interpolate or just 199 // frame. The parameter "interpolate" controls whether to interpolate or just
188 // take the nearest-point. The parameter "crop" controls whether to crop this 200 // take the nearest-point. The parameter "crop" controls whether to crop this
189 // frame to the aspect ratio of the target frame before stretching. 201 // frame to the aspect ratio of the target frame before stretching.
190 virtual void StretchToFrame(VideoFrame *target, bool interpolate, 202 virtual void StretchToFrame(VideoFrame *target, bool interpolate,
191 bool crop) const; 203 bool crop) const;
192 204
193 // Stretches the frame to the given size, creating a new VideoFrame object to 205 // Stretches the frame to the given size, creating a new VideoFrame object to
194 // hold it. The parameter "interpolate" controls whether to interpolate or 206 // hold it. The parameter "interpolate" controls whether to interpolate or
195 // just take the nearest-point. The parameter "crop" controls whether to crop 207 // just take the nearest-point. The parameter "crop" controls whether to crop
196 // this frame to the aspect ratio of the given dimensions before stretching. 208 // this frame to the aspect ratio of the given dimensions before stretching.
197 virtual VideoFrame *Stretch(size_t w, size_t h, bool interpolate, 209 virtual VideoFrame *Stretch(size_t w, size_t h, bool interpolate,
198 bool crop) const; 210 bool crop) const;
199 211
200 // Sets the video frame to black. 212 // Sets the video frame to black.
201 virtual bool SetToBlack(); 213 virtual bool SetToBlack();
202 214
203 // Tests if sample is valid. Returns true if valid. 215 // Tests if sample is valid. Returns true if valid.
204 static bool Validate(uint32 fourcc, int w, int h, const uint8 *sample, 216 static bool Validate(uint32_t fourcc,
217 int w,
218 int h,
219 const uint8_t* sample,
205 size_t sample_size); 220 size_t sample_size);
206 221
207 // Size of an I420 image of given dimensions when stored as a frame buffer. 222 // Size of an I420 image of given dimensions when stored as a frame buffer.
208 static size_t SizeOf(size_t w, size_t h) { 223 static size_t SizeOf(size_t w, size_t h) {
209 return w * h + ((w + 1) / 2) * ((h + 1) / 2) * 2; 224 return w * h + ((w + 1) / 2) * ((h + 1) / 2) * 2;
210 } 225 }
211 226
212 protected: 227 protected:
213 // Creates an empty frame. 228 // Creates an empty frame.
214 virtual VideoFrame *CreateEmptyFrame(int w, int h, size_t pixel_width, 229 virtual VideoFrame *CreateEmptyFrame(int w, int h, size_t pixel_width,
215 size_t pixel_height, 230 size_t pixel_height,
216 int64_t time_stamp) const = 0; 231 int64_t time_stamp) const = 0;
217 virtual void SetRotation(webrtc::VideoRotation rotation) = 0; 232 virtual void SetRotation(webrtc::VideoRotation rotation) = 0;
218 }; 233 };
219 234
220 } // namespace cricket 235 } // namespace cricket
221 236
222 #endif // TALK_MEDIA_BASE_VIDEOFRAME_H_ 237 #endif // TALK_MEDIA_BASE_VIDEOFRAME_H_
OLDNEW
« no previous file with comments | « talk/media/base/videoengine_unittest.h ('k') | talk/media/base/videoframe.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698