encoding
「encoding」の意味・「encoding」とは
「encoding」は情報科学やコンピュータ科学の領域で頻繁に用いられる言葉である。一般的には、情報を特定の形式やコードに変換するプロセスを指す。例えば、文字情報をコンピュータが理解できるバイナリコードに変換することも「encoding」と言う。このような変換は、情報の保存や転送、処理を可能にする。「encoding」の発音・読み方
「encoding」の発音は、IPA表記では /ɪnˈkoʊdɪŋ/ となる。IPAのカタカナ読みでは「インコーディング」となる。日本人が発音するカタカナ英語では「エンコーディング」と読む。「encoding」の定義を英語で解説
「encoding」は、"The process of converting data or information into a specific format or code, especially for the purposes of standardization, speed, secrecy, security, or saving space"と定義される。つまり、標準化、速度向上、秘密保持、セキュリティ強化、またはスペース節約のために、データや情報を特定の形式やコードに変換するプロセスを指す。「encoding」の類語
「encoding」の類語としては、「transcoding」、「ciphering」、「encrypting」などがある。「transcoding」は特定の形式から別の形式に変換することを指し、「ciphering」や「encrypting」は情報を暗号化するプロセスを指す。「encoding」に関連する用語・表現
「encoding」に関連する用語としては、「decoding」、「code」、「data compression」、「encryption」などがある。「decoding」は「encoding」の逆のプロセスで、エンコードされたデータを元の形式に戻すことを指す。「code」は情報を表現するためのシステムや規則を指し、「data compression」はデータをより小さいサイズに圧縮するプロセスを指す。「encryption」は情報を読み取り不能な形式に変換することで、その情報の安全性を保つ手段である。「encoding」の例文
以下に、「encoding」を用いた例文を10個示す。 1. The process of encoding the data was completed without any errors.(データのエンコード処理はエラーなく完了した。)2. Encoding information into binary code allows computers to process it.(情報をバイナリコードにエンコードすることで、コンピュータがそれを処理できる。)
3. The software is capable of encoding and decoding the files.(そのソフトウェアはファイルをエンコードし、デコードすることができる。)
4. Encoding the message ensures its security during transmission.(メッセージをエンコードすることで、その伝送中の安全性が確保される。)
5. The encoding scheme used in this system is complex.(このシステムで使用されているエンコードスキームは複雑である。)
6. The video file needs to be encoded before it can be uploaded.(ビデオファイルはアップロードする前にエンコードする必要がある。)
7. The encoding process can take a long time for large files.(大きなファイルのエンコード処理は時間がかかることがある。)
8. Different encoding standards are used for different types of data.(異なる種類のデータには異なるエンコード標準が使用される。)
9. The encoding of the audio file reduced its size significantly.(オーディオファイルのエンコードにより、そのサイズは大幅に縮小された。)
10. The encoding error caused the data to be unreadable.(エンコードエラーにより、データは読み取り不能となった。)
エンコーディング【encoding】
読み方:えんこーでぃんぐ
Encoding クラス
アセンブリ: mscorlib (mscorlib.dll 内)
構文
<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public MustInherit Class Encoding Implements ICloneable
エンコーディングは、Unicode 文字のセットをバイト シーケンスに変換するプロセスです。デコードはその逆になります。エンコードされたバイト シーケンスを Unicode 文字のセットに変換するプロセスです。
Unicode Standard では、サポートされるすべてのスクリプトについて、各文字にコード ポイント (数値) を割り当てています。コード ポイントのエンコードには UTF (Unicode Transformation Format) が使用されます。Unicode Standard バージョン 3.2 では、次の UTF が使用されています。
.NET Framework では、現在の Unicode エンコーディング、および他のエンコーディングをサポートするため、次のような Encoding クラスを実装しています。
-
ASCIIEncoding は、Unicode 文字を 1 個の 7 ビット ASCII 文字としてエンコードします。このエンコーディングは、U+0000 から U+007F までの文字値だけをサポートします。コード ページは 20127 です。ASCII プロパティを通じても使用できます。
-
UTF7Encoding は、UTF-7 エンコーディングを使用して Unicode 文字をエンコードします。このエンコーディングは、すべての Unicode 文字値をサポートしています。コード ページは 65000 です。UTF7 プロパティを通じても使用できます。
-
UTF8Encoding は、UTF-8 エンコーディングを使用して Unicode 文字をエンコードします。このエンコーディングは、すべての Unicode 文字値をサポートしています。コード ページは 65001 です。UTF8 プロパティを通じて使用できます。
-
UnicodeEncoding は、UTF-16 エンコーディングを使用して Unicode 文字をエンコードします。リトル エンディアン (コード ページ 1200) とビッグ エンディアン (コード ページ 1201) の両方のバイト順をサポートしています。Unicode プロパティ、および BigEndianUnicode プロパティを通じても使用できます。
-
UTF32Encoding は、UTF-32 エンコーディングを使用して Unicode 文字をエンコードします。リトル エンディアン (コード ページ 65005) とビッグ エンディアン (コード ページ 65006) の両方のバイト順をサポートしています。UTF32 プロパティを通じても使用できます。
その他のエンコーディングを取得するには、GetEncoding メソッドを使用します。エンコーディングの一覧を取得するには、GetEncodings メソッドを使用します。
次の表は、エンコーディングと、それに関連付けられたコード ページの一覧を示しています。最後の列にアスタリスク (*) が付いているコード ページは、基になるプラットフォームに関係なく、.NET Framework でネイティブにサポートされています。
名前 |
| ||
---|---|---|---|
IBM037 |
| ||
IBM437 |
| ||
IBM500 |
| ||
708 | ASMO-708 |
| |
DOS-720 |
| ||
ibm737 |
| ||
ibm775 |
| ||
ibm850 |
| ||
ibm852 |
| ||
855 | IBM855 |
| |
857 | ibm857 |
| |
IBM00858 |
| ||
860 | IBM860 |
| |
ibm861 |
| ||
862 | DOS-862 |
| |
IBM863 |
| ||
IBM864 |
| ||
865 | IBM865 |
| |
866 | cp866 |
| |
869 | ibm869 |
| |
870 | IBM870 |
| |
windows-874 |
| ||
875 | cp875 |
| |
932 |
| ||
* | |||
949 | ks_c_5601-1987 |
| |
950 |
| ||
1026 | IBM1026 |
| |
1047 | IBM01047 |
| |
1140 | IBM01140 |
| |
1141 | IBM01141 |
| |
1142 | IBM01142 | IBM EBCDIC (デンマーク - ノルウェー - ヨーロッパ) |
|
IBM01143 |
| ||
1144 | IBM01144 |
| |
1145 | IBM01145 |
| |
1146 | IBM01146 |
| |
1147 | IBM01147 |
| |
1148 | IBM01148 |
| |
1149 | IBM01149 |
| |
* | |||
1201 | unicodeFFFE | * | |
1250 | windows-1250 |
| |
1251 | windows-1251 |
| |
1252 | * | ||
1253 | windows-1253 |
| |
1254 | windows-1254 |
| |
1255 | windows-1255 |
| |
1256 | windows-1256 |
| |
1257 | windows-1257 |
| |
1258 | windows-1258 |
| |
1361 | Johab | 韓国語 (Johab) |
|
| |||
10001 |
| ||
10002 | x-mac-chinesetrad |
| |
10003 | x-mac-korean | * | |
10004 | x-mac-arabic |
| |
10005 | x-mac-hebrew |
| |
10006 | x-mac-greek |
| |
10007 | x-mac-cyrillic |
| |
10008 | x-mac-chinesesimp | * | |
10010 | x-mac-romanian |
| |
10017 | x-mac-ukrainian |
| |
10021 | x-mac-thai |
| |
10029 | x-mac-ce |
| |
10079 | x-mac-icelandic |
| |
10081 | x-mac-turkish |
| |
10082 | x-mac-croatian |
| |
x-Chinese-CNS |
| ||
x-cp20001 |
| ||
20002 | x-Chinese-Eten |
| |
20003 | x-cp20003 |
| |
20004 | x-cp20004 |
| |
20005 | x-cp20005 |
| |
20105 | x-IA5 |
| |
20106 | x-IA5-German | ドイツ語 (IA5) |
|
20107 | x-IA5-Swedish | スウェーデン語 (IA5) |
|
20108 | x-IA5-Norwegian | ノルウェー語 (IA5) |
|
20127 | us-ascii | US-ASCII | * |
20261 | x-cp20261 | T.61 |
|
20269 | x-cp20269 |
| |
20273 | IBM273 |
| |
20277 | IBM277 |
| |
20278 | IBM278 |
| |
20280 | IBM280 |
| |
20284 | IBM284 |
| |
20285 | IBM285 |
| |
20290 | IBM290 |
| |
20297 | IBM297 |
| |
20420 | IBM420 |
| |
20423 | IBM423 |
| |
20424 | IBM424 |
| |
20833 | x-EBCDIC-KoreanExtended |
| |
20838 | IBM-Thai |
| |
20866 |
| ||
20871 | IBM871 |
| |
20880 | IBM880 |
| |
20905 | IBM905 |
| |
20924 | IBM00924 |
| |
20932 |
| ||
20936 | x-cp20936 | 簡体字中国語 (GB2312-80) | * |
20949 | x-cp20949 | 韓国語 Wansung | * |
21025 | cp1025 |
| |
21866 |
| ||
28591 | * | ||
28592 | iso-8859-2 |
| |
28593 | iso-8859-3 |
| |
28594 | iso-8859-4 |
| |
28595 |
| ||
28596 | iso-8859-6 |
| |
28597 | iso-8859-7 |
| |
28598 | iso-8859-8 | ヘブライ語 (ISO-Visual) | * |
28599 | iso-8859-9 |
| |
28603 | iso-8859-13 |
| |
28605 | iso-8859-15 |
| |
29001 | x-Europa |
| |
38598 | iso-8859-8-i | ヘブライ語 (ISO-Logical) | * |
50220 | * | ||
50221 | csISO2022JP | 日本語 (JIS 1 バイト カタカナ可) | * |
50222 | 日本語 (JIS 1 バイト カタカナ可 - SO/SI) | * | |
50225 | iso-2022-kr | * | |
50227 | x-cp50227 | * | |
51932 | * | ||
51936 | * | ||
51949 | * | ||
52936 | hz-gb-2312 | * | |
54936 | * | ||
57002 | x-iscii-de | * | |
57003 | x-iscii-be | * | |
57004 | x-iscii-ta | * | |
57005 | x-iscii-te | * | |
57006 | x-iscii-as | * | |
57007 | x-iscii-or | * | |
57008 | x-iscii-ka | * | |
57009 | x-iscii-ma | * | |
57010 | x-iscii-gu | * | |
57011 | x-iscii-pa | * | |
65000 | * | ||
65001 | * | ||
65005 | * | ||
65006 | utf-32BE | * |
GetByteCount メソッドは、Unicode 文字のセットをエンコードした結果得られるバイト数を確認します。実際のエンコードは、GetBytes メソッドによって実行されます。
同様に、GetCharCount メソッドは、バイト シーケンスをデコードした結果得られる文字数を確認します。実際のデコードは GetChars メソッドによって実行されます。
変換するデータが一連のブロックの形でのみ得られる場合 (ストリームから読み込むデータなど)、または、データ容量が大きいために小さなブロックに分割する必要がある場合は、派生クラスの GetDecoder メソッドで得られる Decoder、または GetEncoder メソッドで得られる Encoder を使用します。
UTF-16 エンコーダおよび UTF-32 エンコーダでは、最上位バイトが先頭に配置されるビッグ エンディアン バイト順、または最下位バイトが先頭に配置されるリトル エンディアン バイト順が使用されます。たとえば、アルファベットの大文字 A (U+0041) は次のように 16 進数でシリアル化されます。
-
UTF-16 ビッグ エンディアン バイト順 : 00 41
-
UTF-16 リトル エンディアン バイト順 : 41 00
Encoding は、オプションでプリアンブルを提供します。プリアンブルは、エンコーディング プロセスで得られたバイト シーケンスの先頭に付加できるバイトの配列です。プリアンブルにバイト順マーク (Unicode では、コード ポイント U+FEFF) が含まれる場合、デコーダはバイト順および変換形式 (UTF) を判断できます。Unicode バイト順マークは、次のように 16 進数でシリアル化されます。
-
UTF-16 ビッグ エンディアン バイト順 : FE FF
-
UTF-16 リトル エンディアン バイト順 : FF FE
通常、ネイティブなバイト順で Unicode 文字を格納した方が効率的です。たとえば、Intel のコンピュータなど、リトル エンディアンのプラットフォームでは、リトル エンディアンのバイト順を使用した方が効率的です。
GetPreamble メソッドは、バイト順マークを格納できるバイト配列を返します。このバイト配列がエンコード済みストリームの前に付加されていると、使用されているエンコーディング形式をデコーダが識別するのに役立ちます。
バイト順とバイト順マークの詳細については、www.unicode.org の「Unicode Standard」を参照してください。
次のコード例は、あるエンコーディングから別のエンコーディングへ文字列を変換しています。
Imports System Imports System.Text Imports Microsoft.VisualBasic Namespace Convert_Example Class MyConvertExampleClass Shared Sub Main() Dim unicodeString As String = "This string contains the unicode character Pi(" & ChrW(&H03A0) & ")" ' Create two different encodings. Dim ascii As Encoding = Encoding.ASCII Dim [unicode] As Encoding = Encoding.Unicode ' Convert the string into a byte[]. Dim unicodeBytes As Byte() = [unicode].GetBytes(unicodeString) ' Perform the conversion from one encoding to the other. Dim asciiBytes As Byte() = Encoding.Convert([unicode], ascii, unicodeBytes) ' Convert the new byte[] into a char[] and then into a string. ' This is a slightly different approach to converting to illustrate ' the use of GetCharCount/GetChars. Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)) As Char ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0) Dim asciiString As New String(asciiChars) ' Display the strings created before and after the conversion. Console.WriteLine("Original string: {0}", unicodeString) Console.WriteLine("Ascii converted string: {0}", asciiString) End Sub End Class End Namespace
using System; using System.Text; namespace ConvertExample { class ConvertExampleClass { static void Main() { string unicodeString = "This string contains the unicode character Pi(\u03a0)"; // Create two different encodings. Encoding ascii = Encoding.ASCII; Encoding unicode = Encoding.Unicode; // Convert the string into a byte[]. byte[] unicodeBytes = unicode.GetBytes(unicodeString); // Perform the conversion from one encoding to the other. byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes); // Convert the new byte[] into a char[] and then into a string. // This is a slightly different approach to converting to illustrate // the use of GetCharCount/GetChars. char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)]; ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0); string asciiString = new string(asciiChars); // Display the strings created before and after the conversion. Console.WriteLine("Original string: {0}", unicodeString); Console.WriteLine("Ascii converted string: {0}", asciiString); } } }
using namespace System; using namespace System::Text; int main() { String^ unicodeString = "This string contains the unicode character Pi(\u03a0)"; // Create two different encodings. Encoding^ ascii = Encoding::ASCII; Encoding^ unicode = Encoding::Unicode; // Convert the string into a Byte->Item[]. array<Byte>^unicodeBytes = unicode->GetBytes( unicodeString ); // Perform the conversion from one encoding to the other. array<Byte>^asciiBytes = Encoding::Convert( unicode, ascii, unicodeBytes ); // Convert the new Byte into[] a char and[] then into a string. // This is a slightly different approach to converting to illustrate // the use of GetCharCount/GetChars. array<Char>^asciiChars = gcnew array<Char>(ascii->GetCharCount( asciiBytes, 0, asciiBytes->Length )); ascii->GetChars( asciiBytes, 0, asciiBytes->Length, asciiChars, 0 ); String^ asciiString = gcnew String( asciiChars ); // Display the strings created before and after the conversion. Console::WriteLine( "Original String*: {0}", unicodeString ); Console::WriteLine( "Ascii converted String*: {0}", asciiString ); }
package ConvertExample; import System.*; import System.Text.*; class ConvertExampleClass { public static void main(String[] args) { String unicodeString = "This string contains the unicode character Pi(\u03a0)"; // Create two different encodings. Encoding ascii = Encoding.get_ASCII(); Encoding unicode = Encoding.get_Unicode(); // Convert the string into a byte[]. ubyte unicodeBytes[] = unicode.GetBytes(unicodeString); // Perform the conversion from one encoding to the other. ubyte asciiBytes[] = Encoding.Convert(unicode, ascii, unicodeBytes); // Convert the new byte[] into a char[] and then into a string. // This is a slightly different approach to converting to illustrate // the use of GetCharCount/GetChars. char asciiChars[] = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.length)]; ascii.GetChars(asciiBytes, 0, asciiBytes.length, asciiChars, 0); String asciiString = new String(asciiChars); // Display the strings created before and after the conversion. Console.WriteLine("Original string: {0}", unicodeString); Console.WriteLine("Ascii converted string: {0}", asciiString); } //main } //ConvertExampleClass
スレッド セーフ
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
Encoding コンストラクタ ()
アセンブリ: mscorlib (mscorlib.dll 内)
構文
解説
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
Encoding コンストラクタ (Int32)
アセンブリ: mscorlib (mscorlib.dll 内)
構文
例外
解説
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
Encoding コンストラクタ
オーバーロードの一覧
名前 | 説明 |
---|---|
Encoding () | Encoding クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
Encoding (Int32) | 指定したコード ページに対応する Encoding クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
Encoding プロパティ
Encoding メソッド
パブリック メソッド
名前 | 説明 | |
---|---|---|
Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) | |
MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
Encoding メンバ
Encoding データ型で公開されるメンバを以下の表に示します。
プロテクト コンストラクタ
パブリック プロパティ
パブリック メソッド
名前 | 説明 | |
---|---|---|
Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) | |
MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
エンコード
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2019年5月) |
エンコード(英: encode)、符号化(ふごうか)は、アナログ信号やデジタルデータといった情報を、特定の方法で復元可能な別の状態に変換する処理である。対義語はデコード(英: decode)で、エンコードされた情報を元に戻す復号(ふくごう)の意味を持つ。
一般的にエンコードおよびデコードに用いる機器、回路、プログラムなどをそれぞれ、エンコーダ(英: encoder、エンコーダーとも)およびデコーダ(英: decoder、デコーダーとも)と称する。狭義では、音声や動画などのコーデックを用いるデータ圧縮・展開処理を指す。
アナログ信号のエンコードとデコード
録音機器のノイズリダクションで用いられたdbxは、音声信号の大小で増幅率が変化する増幅器を用い、音量の変化を対数比1/2に抑えて録音して再生時に2倍にする。録音機やテープ由来の雑音と歪みは信号に比して小さく、再生時に対数伸長すると一層小さくなり、相対的に可聴音域のSN比が低下する。似た原理の雑音低減装置がHiFiビデオやカセットレコーダに広く用いられた。
ディスクリート4chのレコードで、サブキャリアを変調し重畳して記録することもエンコードと呼ばれた。
FMラジオ放送やLPレコード、アナログテープレコーダでも、クラシック音楽では振幅が比較的小さい高音の成分を予め強調して放送/録音し、再生時に高音を減衰させる方法が取られた。DATやCDやDTRSのようなデジタル機器でも、同様な方法で見かけの量子化雑音を減らす機能がある。これらは通常エンファシスと呼ぶ。中波放送で放送法に触れない程度まで高域を強調する装置もあった。RIAA特性も参照。
デジタルデータのエンコード/デコード
エンコードは、デジタルデータを一定の法則で目的に応じた符号に変換する符号化作業である。符号化方式に詳述がある。逆変換をデコードと呼ぶ。
音声・静止画・動画などのマルチメディアデータ圧縮や一般的なデジタルデータファイル全般の圧縮あるいは暗号化を指す場合もある。もともとcode(コード)という語は、「符号」や「符号化する」という意味のほかに、「暗号」や「暗号化する」という意味も持つ英単語である[1][2]。ただし、セキュリティ対策手法の意味で「暗号化」を指すときは、英語では一般的に動詞encrypt(エンクリプト)[3]や名詞encryption(エンクリプション)[4]を使い、明確に区別される。日本語では「暗号化」の対義語として「解読」のほかに「復号」も使われるが、英語の対義語は動詞decrypt(デクリプト)[5]や名詞decryption(デクリプション)[6]である。
エンコード機能を有するソフトウェアやハードウェアを「エンコーダ」と称し、逆に復号する機能を有するものを「デコーダ」と称する。情報の通信や記録を行う装置によっては、エンコーダとデコーダの両方を備える場合があり、このような双方向の変換機能あるいは変換装置、アルゴリズムなどはコーデックと総称する。
コンピュータのマイクロプロセッサでは、与えられた機械語を内部表現として解釈することをデコードと呼び、その論理回路をデコーダと呼ぶ。デコーダを中心に、命令とデータを収集し、演算部に情報を送る機構全体はフロントエンドと称する。
符号化方式
エンコードとデコードで同じ符号化方式(ある順変換とそれに対応する逆変換)を使うことによって、符号から正しいデータが復元されることが担保される。デジタルデータの伝送はこの前提で成り立っている。しかし、異なる方式を用いると符号は正しく復元されず、意味のないデータが生成され、判読不可となる。文字符号化方式の場合は異なる文字コードを使用すると誤った文字に変換され、文字化けの原因となる。例えばShift_JIS形式で記述されているWebページのHTMLファイルをISO-2022-JP形式またはUTF-8(Unicode)形式として読み込むと文字化けする[注釈 1]。
HTMLエンコード
例えば「&
」「<
」「>
」「"
」といった、HTMLとして特殊な意味を持つ文字(特殊文字またはメタ文字)を、意味を持たない別の文字列に置換することを「HTMLエンコード」と呼ぶ。前述の特殊文字の場合は「&
」「<
」「>
」「"
」に置換する。この処理を怠ると、input
要素などで、メタ文字として扱われるデータの入力を許すことになる。これはクロスサイトスクリプティングなどの脆弱性(セキュリティホール)の原因になる[7][8]。
URLエンコード
URL(URI)として直接使用できない文字を表現するため、パーセント記号(%
)を使用して符号化する方式をパーセントエンコーディングと呼ぶ。「URLエンコード」や「URIエンコード」と呼ばれることもある[9]。
ハードウェアエンコード/デコード
デジタルカメラやデジタルビデオカメラでは、デジタルセンサーから取得した生のマルチメディアデータを加工して、補助記憶装置(ストレージデバイス)に次から次へと符号化しながら静止画や動画のファイルとして保存していく。これらは特にリアルタイム性(即応性)が重要視され、高速かつ高スループットのパイプライン処理性能が欠かせないため、専用設計のICチップがハードウェアエンコーダとして採用される[10]。JPEGやH.264といった、特によく使われる符号化方式は、機器固有のネイティブデータ形式とともに、専用のICチップに固定機能としてハードウェアレベルで実装されている。
パーソナルコンピュータの場合、ソフトウェアによるエンコード/デコード処理は、デジタルデータに対して任意の符号化方式を柔軟に実装することが可能であるが、高解像度・高精細なメディアデータを大量に処理するのはCPUへの負荷が高い。そのため、パイプライン処理や並列処理に特化したGPUなどによるハードウェアアクセラレーションを活用してCPUの負担を減らすこともよくある[11]。特に動画再生は、画面描画処理を担当するGPUに任せることで、エンコード(圧縮)されたデータをビデオメモリに転送し、画面表示の際に都度デコード(展開)するだけで済むため都合がよい。描画時にGPUによってフレームをリアルタイムに補間することで、実際に記録されている動画データのフレームレート以上に再生を滑らかに見せる技術も開発されている[12]。モバイルデバイスの場合、SoCにハードウェアコーデックが実装されていることが多い。オペレーティングシステムの提供するAPIを利用することで、アプリケーションソフトウェアはハードウェアでサポートされているコーデックを必要に応じて選択・利用することができる[13][14]。オンライン会議などで使用される配信用アプリでは、Webカメラによってキャプチャされた動画および音声のデータを圧縮しつつネットワーク経由で受信者にブロードキャストしていくが、エンコード/デコードを対応ハードウェアに任せることでCPUの負担を軽減できる。
デジタル機器におけるエンコーダー/デコーダーの凡例
この節は検証可能な参考文献や出典が全く示されていないか、不十分です。(2024年3月) |
脚注
注釈
- ^ Shift_JISのシーケンスには、UTF-8のシーケンスとしては不正なものも含まれるため、表示環境によっては何も表示されなくなることもある。
- ^ 民生の録画機・録音機は現実的には録画・再生兼用機器。
- ^ デジタル放送のダイレクト録画にはエンコーダは不要(アナログ放送のデジタル録画にはエンコードが不可避となる)。エンコーダが必要な場合は以下の通り。
- デジタル放送の非ダイレクト録画
- デジタル放送のダイレクト記録が不可能なメディアへのダビング
- 記録可能時間を変更(圧縮率を変更)したダビング
- ^ デジタル放送は地上波放送、BS放送、CS放送全て(単載、混載を問わない)を含む。
- ^ エンコーダ/デコーダを搭載する機器としての観点から言えば、デジタル放送のテレビやチューナーもデジタル映像再生専用機の一部であるとも言えるが、放送波からデジタルコンテンツとしてのデータを取り出す機能も併載しているという点が明確に異なることから別項目として解説している。
- ^ デジタル放送受信機で録画機能付きのものは広義として、あるいはこの項目(記事)内の扱いとしては録画機に含まれる。但しデジタル放送をダイレクトに録画(エンコードが不要な録画)するものはデコーダのみ。ダイレクト録画が不可能なものに録画やダビングする機能がある場合はエンコーダ(この場合のエンコードは総論としては映像の再エンコードに当たる)の搭載も必要になる。
出典
- ^ codeの意味・使い方・読み方|英辞郎 on the WEB
- ^ code noun - Definition, pictures, pronunciation and usage notes | Oxford Advanced Learner's Dictionary at OxfordLearnersDictionaries.com
- ^ encryptの意味・使い方|英辞郎 on the WEB
- ^ encryptionの意味・使い方・読み方|英辞郎 on the WEB
- ^ decryptの意味・使い方・読み方|英辞郎 on the WEB
- ^ decryptionの意味・使い方・読み方|英辞郎 on the WEB
- ^ 19. マルチバイト文字とXSS脆弱性 | 日経クロステック(xTECH)
- ^ 対策遅らせるHTMLエンコーディングの「神話」 | 日経クロステック(xTECH)
- ^ URLエンコード(パーセントエンコーディング / HTMLエンコード)とは - 意味をわかりやすく - IT用語辞典 e-Words
- ^ ハードウェアエンコードとは - 意味をわかりやすく - IT用語辞典 e-Words
- ^ GPU アクセラレーションレンダリングとハードウェアエンコーディング | Adobe
- ^ 市ヶ谷でレビュー「AMD Fluid Motion VideoがBlu-ray再生でヌルくてスゴイ」 | 株式会社アスク
- ^ MPEG-4 AVC (H.264) Support in DirectX VA - Windows drivers | Microsoft Learn
- ^ MediaCodec での低レイテンシのデコード | Android オープンソース プロジェクト | Android Open Source Project
関連項目
- Encodingのページへのリンク