1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "content/common/media/media_param_traits.h"
7 #include "base/strings/stringprintf.h"
8 #include "media/audio/audio_parameters.h"
9 #include "media/base/limits.h"
10 #include "media/base/video_capture_types.h"
12 using media::AudioParameters
;
13 using media::ChannelLayout
;
14 using media::VideoCaptureFormat
;
15 using media::VideoPixelFormat
;
19 void ParamTraits
<AudioParameters
>::Write(Message
* m
,
20 const AudioParameters
& p
) {
21 m
->WriteInt(static_cast<int>(p
.format()));
22 m
->WriteInt(static_cast<int>(p
.channel_layout()));
23 m
->WriteInt(p
.sample_rate());
24 m
->WriteInt(p
.bits_per_sample());
25 m
->WriteInt(p
.frames_per_buffer());
26 m
->WriteInt(p
.channels());
27 m
->WriteInt(p
.effects());
30 bool ParamTraits
<AudioParameters
>::Read(const Message
* m
,
33 int format
, channel_layout
, sample_rate
, bits_per_sample
,
34 frames_per_buffer
, channels
, effects
;
36 if (!iter
->ReadInt(&format
) ||
37 !iter
->ReadInt(&channel_layout
) ||
38 !iter
->ReadInt(&sample_rate
) ||
39 !iter
->ReadInt(&bits_per_sample
) ||
40 !iter
->ReadInt(&frames_per_buffer
) ||
41 !iter
->ReadInt(&channels
) ||
42 !iter
->ReadInt(&effects
))
45 AudioParameters
params(static_cast<AudioParameters::Format
>(format
),
46 static_cast<ChannelLayout
>(channel_layout
), channels
,
47 sample_rate
, bits_per_sample
, frames_per_buffer
, effects
);
54 void ParamTraits
<AudioParameters
>::Log(const AudioParameters
& p
,
56 l
->append(base::StringPrintf("<AudioParameters>"));
59 void ParamTraits
<VideoCaptureFormat
>::Write(Message
* m
,
60 const VideoCaptureFormat
& p
) {
61 // Crash during Send rather than have a failure at the message handler.
62 m
->WriteInt(p
.frame_size
.width());
63 m
->WriteInt(p
.frame_size
.height());
64 m
->WriteFloat(p
.frame_rate
);
65 m
->WriteInt(static_cast<int>(p
.pixel_format
));
68 bool ParamTraits
<VideoCaptureFormat
>::Read(const Message
* m
,
70 VideoCaptureFormat
* r
) {
71 int frame_size_width
, frame_size_height
, pixel_format
;
72 if (!iter
->ReadInt(&frame_size_width
) ||
73 !iter
->ReadInt(&frame_size_height
) ||
74 !iter
->ReadFloat(&r
->frame_rate
) ||
75 !iter
->ReadInt(&pixel_format
))
78 r
->frame_size
.SetSize(frame_size_width
, frame_size_height
);
79 r
->pixel_format
= static_cast<VideoPixelFormat
>(pixel_format
);
85 void ParamTraits
<VideoCaptureFormat
>::Log(const VideoCaptureFormat
& p
,
87 l
->append(base::StringPrintf("<VideoCaptureFormat>"));