0d34db61a65a742a766c0eacf4f6aaf4c9115e48
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia / Common / IMediaBuffer.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
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 using System;
18
19 namespace Tizen.Multimedia
20 {
21     /// <summary>
22     /// Provides functionality to read and write a media buffer.
23     /// </summary>
24     public interface IMediaBuffer
25     {
26         /// <summary>
27         /// Gets or sets a value at the specified index.
28         /// </summary>
29         /// <param name="index">The index of the value to get or set.</param>
30         /// <exception cref="ArgumentOutOfRangeException">
31         ///     index is less than zero.\n
32         ///     -or-\n
33         ///     index is equal to or greater than <see cref="Length"/>.
34         /// </exception>
35         /// <exception cref="ObjectDisposedException">The object that owns the current buffer already has been disposed of.</exception>
36         /// <exception cref="InvalidOperationException">The buffer is not available. i.e. not writable state.</exception>
37         byte this[int index]
38         {
39             get;
40             set;
41         }
42
43         /// <summary>
44         /// Gets the size of the buffer, in bytes.
45         /// </summary>
46         int Length { get; }
47
48         /// <summary>
49         /// Gets the value indicating whether the <see cref="IMediaBuffer"/> is read-only.
50         /// </summary>
51         /// <value> true if the <see cref="IMediaBuffer"/> is read-only; otherwise, false.
52         bool IsReadOnly { get; }
53
54         /// <summary>
55         /// Copies data from a byte array to the buffer.
56         /// </summary>
57         /// <param name="dest">The array to copy to.</param>
58         /// <param name="startIndex">The zero-based index in the source array where copying should start.</param>
59         /// <param name="length">The number of array elements to copy.</param>
60         /// <exception cref="ArgumentOutOfRangeException">startIndex or length is not valid.</exception>
61         /// <exception cref="ObjectDisposedException">The object that owns the current buffer already has been disposed of.</exception>
62         void CopyTo(byte[] dest, int startIndex, int length);
63
64         /// <summary>
65         /// Copies data from a byte array to the buffer.
66         /// </summary>
67         /// <param name="dest">The array to copy to.</param>
68         /// <param name="startIndex">The zero-based index in the source array where copying should start.</param>
69         /// <param name="length">The number of array elements to copy.</param>
70         /// <param name="offset">The zero-based index in the buffer where copying should start.</param>
71         /// <exception cref="ArgumentOutOfRangeException">startIndex, offset or length is not valid.</exception>
72         /// <exception cref="ObjectDisposedException">The object that owns the current buffer already has been disposed of.</exception>
73         void CopyTo(byte[] dest, int startIndex, int length, int offset);
74
75         /// <summary>
76         /// Copies data from the buffer to a byte array.
77         /// </summary>
78         /// <param name="source">The array to copy from.</param>
79         /// <param name="startIndex">The zero-based index in the dest array where copying should start.</param>
80         /// <param name="length">The number of elements to copy.</param>
81         /// <exception cref="ArgumentOutOfRangeException">startIndex or length is not valid.</exception>
82         /// <exception cref="ObjectDisposedException">The object that owns the current buffer already has been disposed of.</exception>
83         /// <exception cref="InvalidOperationException">The buffer is not available. i.e. not writable state.</exception>
84
85         void CopyFrom(byte[] source, int startIndex, int length);
86
87         /// <summary>
88         /// Copies data from the buffer to a byte array.
89         /// </summary>
90         /// <param name="source">The array to copy from.</param>
91         /// <param name="startIndex">The zero-based index in the dest array where copying should start.</param>
92         /// <param name="length">The number of elements to copy.</param>
93         /// <param name="offset">The zero-based index in the buffer where copying should start.</param>
94         /// <exception cref="ArgumentOutOfRangeException">startIndex, offset or length is not valid.</exception>
95         /// <exception cref="ObjectDisposedException">The object that owns the current buffer already has been disposed of.</exception>
96         /// <exception cref="InvalidOperationException">The buffer is not available. i.e. not writable state.</exception>
97         void CopyFrom(byte[] source, int startIndex, int length, int offset);
98     }
99 }