2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 using System.Diagnostics;
20 namespace Tizen.Multimedia
23 /// Represents a video plane for <see cref="MediaPacket"/>.
24 /// This class is used if and only if the format of the packet is raw video.
26 public class MediaPacketVideoPlane
28 private readonly MediaPacket _packet;
29 private readonly int _strideWidth;
30 private readonly int _strideHeight;
31 private readonly MediaPacketBuffer _buffer;
33 internal MediaPacketVideoPlane(MediaPacket packet, int index)
35 Debug.Assert(packet != null, "The packet is null!");
36 Debug.Assert(!packet.IsDisposed, "Packet is already disposed!");
37 Debug.Assert(index >= 0, "Video plane index must not be negative!");
41 int ret = Interop.MediaPacket.GetVideoStrideWidth(packet.GetHandle(), index, out _strideWidth);
42 MultimediaDebug.AssertNoError(ret);
44 ret = Interop.MediaPacket.GetVideoStrideWidth(packet.GetHandle(), index, out _strideHeight);
45 MultimediaDebug.AssertNoError(ret);
48 ret = Interop.MediaPacket.GetVideoPlaneData(packet.GetHandle(), index, out dataHandle);
49 MultimediaDebug.AssertNoError(ret);
51 _buffer = new MediaPacketBuffer(packet, dataHandle, _strideWidth * _strideHeight);
55 /// Gets the buffer of the current video plane.
57 /// <exception cref="ObjectDisposedException">The MediaPacket that owns the current buffer already has been disposed of.</exception>
58 public MediaPacketBuffer Buffer
62 _packet.EnsureReadableState();
68 /// Gets the stride width of the current video plane.
70 /// <exception cref="ObjectDisposedException">The MediaPacket that owns the current buffer already has been disposed of.</exception>
71 public int StrideWidth
75 _packet.EnsureReadableState();
81 /// Gets the stride height of the current video plane.
83 /// <exception cref="ObjectDisposedException">The MediaPacket that owns the current buffer already has been disposed of.</exception>
84 public int StrideHeight
88 _packet.EnsureReadableState();