1 /*
2  * Copyright (c) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.ims;
18 
19 import android.os.Parcel;
20 import android.os.Parcelable;
21 
22 /**
23  * Parcelable object to handle IMS stream media profile.
24  * It provides the media direction, quality of audio and/or video.
25  *
26  * @hide
27  */
28 public class ImsStreamMediaProfile implements Parcelable {
29     private static final String TAG = "ImsStreamMediaProfile";
30 
31     /**
32      * Media directions
33      */
34     public static final int DIRECTION_INVALID = (-1);
35     public static final int DIRECTION_INACTIVE = 0;
36     public static final int DIRECTION_RECEIVE = 1;
37     public static final int DIRECTION_SEND = 2;
38     public static final int DIRECTION_SEND_RECEIVE = 3;
39 
40     /**
41      * Audio information
42      */
43     public static final int AUDIO_QUALITY_NONE = 0;
44     public static final int AUDIO_QUALITY_AMR = 1;
45     public static final int AUDIO_QUALITY_AMR_WB = 2;
46     public static final int AUDIO_QUALITY_QCELP13K = 3;
47     public static final int AUDIO_QUALITY_EVRC = 4;
48     public static final int AUDIO_QUALITY_EVRC_B = 5;
49     public static final int AUDIO_QUALITY_EVRC_WB = 6;
50     public static final int AUDIO_QUALITY_EVRC_NW = 7;
51     public static final int AUDIO_QUALITY_GSM_EFR = 8;
52     public static final int AUDIO_QUALITY_GSM_FR = 9;
53     public static final int AUDIO_QUALITY_GSM_HR = 10;
54     public static final int AUDIO_QUALITY_G711U = 11;
55     public static final int AUDIO_QUALITY_G723 = 12;
56     public static final int AUDIO_QUALITY_G711A = 13;
57     public static final int AUDIO_QUALITY_G722 = 14;
58     public static final int AUDIO_QUALITY_G711AB = 15;
59     public static final int AUDIO_QUALITY_G729 = 16;
60     public static final int AUDIO_QUALITY_EVS_NB = 17;
61     public static final int AUDIO_QUALITY_EVS_WB = 18;
62     public static final int AUDIO_QUALITY_EVS_SWB = 19;
63     public static final int AUDIO_QUALITY_EVS_FB = 20;
64 
65    /**
66      * Video information
67      */
68     public static final int VIDEO_QUALITY_NONE = 0;
69     public static final int VIDEO_QUALITY_QCIF = (1 << 0);
70     public static final int VIDEO_QUALITY_QVGA_LANDSCAPE = (1 << 1);
71     public static final int VIDEO_QUALITY_QVGA_PORTRAIT = (1 << 2);
72     public static final int VIDEO_QUALITY_VGA_LANDSCAPE = (1 << 3);
73     public static final int VIDEO_QUALITY_VGA_PORTRAIT = (1 << 4);
74 
75     // Audio related information
76     public int mAudioQuality;
77     public int mAudioDirection;
78     // Video related information
79     public int mVideoQuality;
80     public int mVideoDirection;
81 
82 
83 
ImsStreamMediaProfile(Parcel in)84     public ImsStreamMediaProfile(Parcel in) {
85         readFromParcel(in);
86     }
87 
ImsStreamMediaProfile()88     public ImsStreamMediaProfile() {
89         mAudioQuality = AUDIO_QUALITY_NONE;
90         mAudioDirection = DIRECTION_SEND_RECEIVE;
91         mVideoQuality = VIDEO_QUALITY_NONE;
92         mVideoDirection = DIRECTION_INVALID;
93     }
94 
ImsStreamMediaProfile(int audioQuality, int audioDirection, int videoQuality, int videoDirection)95     public ImsStreamMediaProfile(int audioQuality, int audioDirection,
96             int videoQuality, int videoDirection) {
97         mAudioQuality = audioQuality;
98         mAudioDirection = audioDirection;
99         mVideoQuality = videoQuality;
100         mVideoDirection = videoDirection;
101     }
102 
copyFrom(ImsStreamMediaProfile profile)103     public void copyFrom(ImsStreamMediaProfile profile) {
104         mAudioQuality = profile.mAudioQuality;
105         mAudioDirection = profile.mAudioDirection;
106         mVideoQuality = profile.mVideoQuality;
107         mVideoDirection = profile.mVideoDirection;
108     }
109 
110     @Override
toString()111     public String toString() {
112         return "{ audioQuality=" + mAudioQuality +
113                 ", audioDirection=" + mAudioDirection +
114                 ", videoQuality=" + mVideoQuality +
115                 ", videoDirection=" + mVideoDirection + " }";
116     }
117 
118     @Override
describeContents()119     public int describeContents() {
120         return 0;
121     }
122 
123     @Override
writeToParcel(Parcel out, int flags)124     public void writeToParcel(Parcel out, int flags) {
125         out.writeInt(mAudioQuality);
126         out.writeInt(mAudioDirection);
127         out.writeInt(mVideoQuality);
128         out.writeInt(mVideoDirection);
129     }
130 
readFromParcel(Parcel in)131     private void readFromParcel(Parcel in) {
132         mAudioQuality = in.readInt();
133         mAudioDirection = in.readInt();
134         mVideoQuality = in.readInt();
135         mVideoDirection = in.readInt();
136     }
137 
138     public static final Creator<ImsStreamMediaProfile> CREATOR =
139             new Creator<ImsStreamMediaProfile>() {
140         @Override
141         public ImsStreamMediaProfile createFromParcel(Parcel in) {
142             return new ImsStreamMediaProfile(in);
143         }
144 
145         @Override
146         public ImsStreamMediaProfile[] newArray(int size) {
147             return new ImsStreamMediaProfile[size];
148         }
149     };
150 }
151