diff --git a/po/ja.po b/po/ja.po index 79002df7d..f60b04955 100644 --- a/po/ja.po +++ b/po/ja.po @@ -2,14 +2,14 @@ # Copyright (C) 2009 Moritz Bunkus # This file is distributed under the same license as the mkvtoolnix package. # -# Hiroki Taniura 2009-2012. +# Hiroki Taniura 2009-2013. # Katsuhiko Nishimra 2010. msgid "" msgstr "" "Project-Id-Version: ja\n" "Report-Msgid-Bugs-To: Hiroki Taniura \n" "POT-Creation-Date: 2009-02-27 00:38+0900\n" -"PO-Revision-Date: 2013-02-27 02:29+0900\n" +"PO-Revision-Date: 2013-04-12 22:32+0900\n" "Last-Translator: Hiroki Taniura \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -278,15 +278,15 @@ msgid " --engage Turns on experimental feature 'feature'.\n" msgstr " --engage 実験的な機能である'feature'を有効化します。\n" #: src/merge/mkvmerge.cpp:222 -#, fuzzy msgid "" " --fix-bitstream-timing-information \n" " Adjust the frame/field rate stored in the video\n" " bitstream to match the track's default duration.\n" msgstr "" -" --forced-track \n" -" '強制表示'フラグをこのトラックに設定します。\n" -" boolに0が指定された場合はフラグを設定しません。\n" +" --fix-bitstream-timing-information \n" +" トラックのデフォルトの継続時間に合うように\n" +" ビデオビットストリームのフレーム・フィールドレート\n" +" を調整します。\n" #: src/merge/mkvmerge.cpp:205 msgid "" @@ -381,36 +381,34 @@ msgstr "" " ファイルを分割します。\n" #: src/merge/mkvmerge.cpp:131 -#, fuzzy msgid "" " --split chapters:all|A[,B...]\n" " Create a new file before each chapter (with 'all')\n" " or before chapter numbers A, B etc.\n" msgstr "" -" --split timecodes:A[,B...]\n" -" 各タイムコード、A、B等の後にファイルを分割します。\n" +" --split chapters:all|A[,B...]\n" +" 各チャプタ(allの場合)またはチャプタ番号A、B\n" +" のところでファイルを分割します。\n" #: src/merge/mkvmerge.cpp:128 -#, fuzzy msgid "" " --split frames:A[,B...]\n" " Create a new file after each frame/field A, B\n" " etc.\n" msgstr "" " --split timecodes:A[,B...]\n" -" 各タイムコード、A、B等の後にファイルを分割します。\n" +" A、B等の各フレーム・フィールドの後でファイルを\n" +" 分割します。\n" #: src/merge/mkvmerge.cpp:125 -#, fuzzy msgid "" " --split parts-frames:start1-end1[,[+]start2-end2,...]\n" " Same as 'parts:', but 'startN'/'endN' are frame/\n" " field numbers instead of timecodes.\n" msgstr "" -" --split parts:start1-end1[,[+]start2-end2,...]\n" -" ファイルを分割するか、'+'の接頭辞が付いている場合は\n" -" 前の範囲のファイルに追加結合して、start-endの\n" -" タイムコードの範囲を保持します。\n" +" --split parts-frames:start1-end1[,[+]start2-end2,...]\n" +" 'parts:'と同じですが、'startN'・'endN'は\n" +" タイムコードではなくフレーム・フィールド番号です。\n" #: src/merge/mkvmerge.cpp:121 msgid "" @@ -431,7 +429,7 @@ msgid "" " etc.\n" msgstr "" " --split timecodes:A[,B...]\n" -" 各タイムコード、A、B等の後にファイルを分割します。\n" +" A、B等の各タイムコードの後でファイルを分割します。\n" #: src/merge/mkvmerge.cpp:134 msgid " --split-max-files Create at most n files.\n" @@ -1512,9 +1510,8 @@ msgid "'--engage' lacks its argument.\n" msgstr "'--engage'にパラメータがありません。\n" #: src/merge/mkvmerge.cpp:2332 -#, fuzzy msgid "'--fix-bitstream-timing-information' lacks its argument.\n" -msgstr "'--default-duration'にパラメータがありません。\n" +msgstr "'--fix-bitstream-timing-information'に引数がありません。\n" #: src/merge/mkvmerge.cpp:2224 msgid "'--forced-track' lacks its argument.\n" @@ -2512,9 +2509,9 @@ msgid "Chapter files (*.xml;*.txt;*.cue)|*.xml;*.txt;*.cue|%s" msgstr "チャプタファイル (*.xml;*.txt;*.cue)|*.xml;*.txt;*.cue|%s" #: src/mmg/tabs/chapters.cpp:561 -#, fuzzy, c-format, boost-format +#, c-format, boost-format msgid "Chapter files (*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue)|*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue|%s" -msgstr "チャプタファイル (*.xml;*.txt;*.mka;*.mkv;*.mk3d;*.cue)|*.xml;*.txt;*.mka;*.mkv;*.mk3d;*.cue|%s" +msgstr "チャプタファイル (*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue)|*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue|%s" #: src/mmg/tabs/chapters.cpp:366 msgid "Chapter names and languages" @@ -3781,9 +3778,8 @@ msgid "Finished processing on %s" msgstr "%sの処理が終了しました" #: src/mmg/tabs/input_format.cpp:260 -#, fuzzy msgid "Fix bitstream timing information" -msgstr "情報の保存中にエラーが発生しました" +msgstr "ビットストリームのタイミング情報を修復する" #: src/mmg/tabs/chapters.cpp:354 msgid "Flags:" @@ -4224,9 +4220,9 @@ msgid "Invalid boolean option specified in '--default-track %1%'.\n" msgstr "'--default-track %1%'で無効なブール型が指定されました。\n" #: src/merge/mkvmerge.cpp:1415 -#, fuzzy, boost-format +#, boost-format msgid "Invalid boolean option specified in '--fix-bitstream-timing-information %1%'.\n" -msgstr "'--forced-track %1%'で無効なブール型が指定されました。\n" +msgstr "'--fix-bitstream-timing-information %1%'で無効なブール型が指定されました。\n" #: src/merge/mkvmerge.cpp:1067 #, boost-format @@ -4245,9 +4241,9 @@ msgstr "'%1% %2%'での変更の仕様(%3%)は無効です。\n" #: src/merge/mkvmerge.cpp:854 #: src/merge/mkvmerge.cpp:893 -#, fuzzy, boost-format +#, boost-format msgid "Invalid chapter number '%1%' for '--split' in '--split %2%': %3%\n" -msgstr "'--split %1%'で無効な'--split'フォーマットが指定されました。\n" +msgstr "'--split %2%'の'%1%'は無効な'--split'のチャプタ番号が指定されました:%3%\n" #: src/merge/mkvmerge.cpp:1122 #, boost-format @@ -4279,14 +4275,14 @@ msgid "Invalid data for Base64 encoding found." msgstr "Base64エンコーディングには無効なデータが見つかりました。" #: src/common/split_arg_parsing.cpp:66 -#, fuzzy, boost-format +#, boost-format msgid "Invalid end frame/field number for '--split' in '--split %1%' (current part: %2%).\n" -msgstr "'--split %1%'(現在の部分:%2%)で無効な'--split'の開始点/終了点が指定されました。\n" +msgstr "'--split %1%'(現在の部分:%2%)で無効な'--split'の終了フレーム・フィールド番号が指定されました。\n" #: src/common/split_arg_parsing.cpp:70 -#, fuzzy, boost-format +#, boost-format msgid "Invalid end frame/field number for '--split' in '--split %1%' (current part: %2%). The end number must be bigger than the start number.\n" -msgstr "'--split %1%'(現在の部分:%2%)で'--split'としては無効な終了点の時間が見つかりました。終了点の時間は開始点の時間より大きくなければなりません。\n" +msgstr "'--split %1%'(現在の部分:%2%)で'--split'としては無効な終了点のフレーム・フィールド番号が指定されました。終了点の番号は開始点の番号より大きくなければなりません。\n" #: src/common/split_arg_parsing.cpp:63 #, boost-format @@ -4327,14 +4323,12 @@ msgid "Invalid format used for the end time for '%s'. Setting value to 0." msgstr "'%s'の終了時間に使用されているフォーマットが無効です。値を0に設定します。" #: src/mmg/tabs/chapters.cpp:1374 -#, fuzzy msgid "Invalid format used for the segment UID. Not using the value." -msgstr "'%s'の終了時間に使用されているフォーマットが無効です。値を0に設定します。" +msgstr "セグメントUIDに使用されているフォーマットが無効です。この値は使用しません。" #: src/mmg/tabs/chapters.cpp:1392 -#, fuzzy msgid "Invalid format used for the segment edition UID. Not using the value." -msgstr "'%s'の終了時間に使用されているフォーマットが無効です。値を0に設定します。" +msgstr "セグメントエディションUIDに使用されているフォーマットが無効です。この値は使用しません。" #: src/mmg/tabs/chapters.cpp:1333 #, c-format, boost-format @@ -4379,9 +4373,9 @@ msgid "Invalid format: unknown character '%1%' found" msgstr "無効なフォーマットです:未知の文字'%1%'が見つかりました" #: src/merge/mkvmerge.cpp:834 -#, fuzzy, boost-format +#, boost-format msgid "Invalid frame for '--split' in '--split %1%'.\n" -msgstr "'--split %1%'で無効な'--split'フォーマットが指定されました。\n" +msgstr "'--split %1%'で'--split'としては無効なフレームが指定されました。\n" #: src/input/r_vobsub.cpp:530 #, boost-format @@ -4437,14 +4431,14 @@ msgid "Invalid split size in '--split %1%'.\n" msgstr "'--split %1%'で無効な分割サイズがあります。\n" #: src/common/split_arg_parsing.cpp:56 -#, fuzzy, boost-format +#, boost-format msgid "Invalid start frame/field number for '--split' in '--split %1%' (current part: %2%).\n" -msgstr "'--split %1%'(現在の部分:%2%)で無効な'--split'の開始点/終了点が指定されました。\n" +msgstr "'--split %1%'(現在の部分:%2%)で'--split'としては無効な開始点のフレーム・フィールド番号が指定されました。\n" #: src/common/split_arg_parsing.cpp:77 -#, fuzzy, boost-format +#, boost-format msgid "Invalid start frame/field number for '--split' in '--split %1%' (current part: %2%). The start number must be bigger than or equal to the previous part's end number.\n" -msgstr "'--split %1%'(現在の部分:%2%)で'--split'としては無効な終了点の時間が見つかりました。開始点の時間は前の部分の終了点の時間以上でなければなりません。。\n" +msgstr "'--split %1%'(現在の部分:%2%)で'--split'としては無効な開始点のフレーム・フィールド番号が指定されました。開始点の番号は直前部分の終了点の番号以上でなければなりません。\n" #: src/input/r_usf.cpp:207 msgid "Invalid start or stop timecode" @@ -4552,9 +4546,9 @@ msgid "Invalid track ID specified in '--default-track %1%'.\n" msgstr "'--default-track %1%'で無効なトラックIDが指定されました。\n" #: src/merge/mkvmerge.cpp:1409 -#, fuzzy, boost-format +#, boost-format msgid "Invalid track ID specified in '--fix-bitstream-timing-information %1%'.\n" -msgstr "'--forced-track %1%'で無効なトラックIDが指定されました。\n" +msgstr "'--fix-bitstream-timing-information %1%'で無効なトラックIDが指定されました。\n" #: src/merge/mkvmerge.cpp:1061 #, boost-format @@ -5211,7 +5205,7 @@ msgstr "修正されたヘッダのフィールドはありません。何も保 #: src/mmg/tabs/input_format.cpp:261 msgid "Normally mkvmerge does not change the timing information (frame/field rate) stored in the video bitstream. With this option that information is adjusted to match the container timing information. The container timing information can come from various sources: from the command line via --default-duration, the source container or derived from the bitstream." -msgstr "" +msgstr "通常、mkvmergeはビデオビットストリームに格納されているタイミング情報(フレーム・フィールドレート)を変更しません。このオプションを指定すると、その情報はコンテナのタイミング情報に合うように調節されます。コンテナのタイミング情報は、次のような様々なソースから得ることができます:コマンドラインから--default-durationを通じて、ソースコンテナ、ビットストリームから取得" #: src/mmg/cli_options_dlg.cpp:144 msgid "Normally mkvmerge keeps aspect ratio information in MPEG4 video bitstreams and puts the information into the container. This option causes mkvmerge to remove the aspect ratio information from the bitstream." @@ -6234,7 +6228,7 @@ msgstr "トラックの横解像度を指定します。縦も同様に指定さ #: src/mmg/options/mkvmerge.cpp:57 msgid "Sets the priority that mkvmerge will run with. Chosing 'lowest' will cause mkvmerge to select a low I/O priority as well." -msgstr "" +msgstr "mkvmergeが走る優先度を設定します。'lowest'を選択すると、mkvmergeにそれに加えて低いI/O優先度も選択させることができます。" #: src/mmg/tabs/global.cpp:331 msgid "" @@ -6956,7 +6950,7 @@ msgstr "editで指定された'%1%'と'%2%'はUID %3%の同じトラックに解 #: src/mmg/tabs/chapters.cpp:353 msgid "The edition UID to play from the segment linked in the chapter's segment UID. This is simply a number." -msgstr "" +msgstr "チャプタのセグメントUIDに紐付けられているセグメントから再生するべきエディションUIDです。これは単なる数字を指定します。" #: src/mmg/header_editor/frame.cpp:660 #: src/mmg/tabs/chapters.cpp:1688 @@ -7082,9 +7076,8 @@ msgstr "このファイルはサポートされていないコンテナフォー #: src/mmg/wx_kax_analyzer.cpp:36 #: src/propedit/propedit.cpp:94 -#, fuzzy msgid "The file is being analyzed." -msgstr "ファイルを解析します。\n" +msgstr "ファイルを解析中です。" #: src/merge/output_control.cpp:282 msgid "The file is being fixed, part 1/4..." @@ -7146,7 +7139,7 @@ msgstr "追加されたファイルはプレイリストです。このファイ #: src/common/kax_file.cpp:48 #, boost-format msgid "The first cluster timecode after the resync is %1%.\n" -msgstr "" +msgstr "再同期後最初のクラスタのタイムコードは%1%です。\n" #: src/merge/mkvmerge.cpp:1755 msgid "The first file cannot be appended because there are no files to append to.\n" @@ -7262,7 +7255,7 @@ msgstr "言語コード'%1%'は有効なISO639-2言語コードではないの #: src/common/kax_file.cpp:197 #, boost-format msgid "The last timecode processed before the error was encountered was %1%.\n" -msgstr "" +msgstr "エラーに遭遇する前に処理された最後のタイムコードは%1%でした。\n" #: src/merge/timecode_factory.cpp:213 #, boost-format @@ -7711,7 +7704,7 @@ msgstr "このAVC/h.264トラックはキーフレームで始まっていませ #: src/output/p_avc.cpp:126 msgid "This AVC/h.264 track's timing information indicates that it uses a variable frame rate. However, no default duration nor an external timecode file has been provided for it, nor does the source container provide timecodes. The resulting timecodes may not be useful.\n" -msgstr "" +msgstr "このAVC・h.264トラックのタイミング情報は、可変フレームレートを使用していることを示しています。しかし、そのためのデフォルトの継続時間や外部んぼタイムコードファイルが提供されておらず、ソースコンテナもタイムコードを提供していません。その結果生成されるタイムコードは役に立たない可能性があります。\n" #: src/output/p_mp3.cpp:58 #, boost-format @@ -8454,7 +8447,7 @@ msgstr "VobSubインデックスファイル'%1%'を書き込んでいます。\ #: src/mmg/tabs/chapters.cpp:1677 msgid "Writing to the file failed. Typical reasons include the file being write-protected, locked by another process or you not having write permissions for the target directory." -msgstr "" +msgstr "ファイルへの書き込みが失敗しました。ファイルが書き込み保護されていたり、他のプロセスによってロックされていたり、ターゲットディレクトリの書き込み権限が無いということが典型的な原因として挙げられます。" #: src/common/kate.cpp:59 #, boost-format @@ -10412,4 +10405,3 @@ msgstr "はい" #~ msgid "wrong usage: writing to read-only memory" #~ msgstr "間違った使用法:読み込み専用メモリへの書き込み" - diff --git a/po/tr.po b/po/tr.po index 607f54017..4cb5ce68d 100644 --- a/po/tr.po +++ b/po/tr.po @@ -5,10 +5,10 @@ # BouRock , 2011. msgid "" msgstr "" -"Project-Id-Version: MKVToolNix 6.1.0\n" +"Project-Id-Version: MKVToolNix 6.2.0\n" "Report-Msgid-Bugs-To: moritz@bunkus.org\n" "POT-Creation-Date: 2011-01-17 08:47:00+0100\n" -"PO-Revision-Date: 2013-02-27 09:16+0200\n" +"PO-Revision-Date: 2013-04-21 09:49+0200\n" "Last-Translator: Burak Yavuz \n" "Language-Team: BouRock \n" "Language: Türkçe\n" @@ -277,15 +277,14 @@ msgid " --engage Turns on experimental feature 'feature'.\n" msgstr " --engage <özellik> Deneysel özelliği 'özellik' açar.\n" #: src/merge/mkvmerge.cpp:222 -#, fuzzy msgid "" " --fix-bitstream-timing-information \n" " Adjust the frame/field rate stored in the video\n" " bitstream to match the track's default duration.\n" msgstr "" -" --forced-track \n" -" Bu iz için 'zorunlu' işarete ayarlar veya\n" -" eğer bool 0 ise bulunmaması için zorlar.\n" +" --fix-bitstream-timing-information \n" +" İzin varsayılan süresiyle eşleşmesi için görüntü\n" +" bit akışında saklanan kare/alan oranını ayarlar.\n" #: src/merge/mkvmerge.cpp:205 msgid "" @@ -1514,9 +1513,8 @@ msgid "'--engage' lacks its argument.\n" msgstr "'--engage' bağımsız değişkenine ihtiyacı olur.\n" #: src/merge/mkvmerge.cpp:2332 -#, fuzzy msgid "'--fix-bitstream-timing-information' lacks its argument.\n" -msgstr "'--default-duration' bağımsız değişkenine ihtiyacı olur.\n" +msgstr "'--fix-bitstream-timing-information' bağımsız değişkenine ihtiyacı olur.\n" #: src/merge/mkvmerge.cpp:2224 msgid "'--forced-track' lacks its argument.\n" @@ -1668,12 +1666,12 @@ msgstr "+-> FLAC dosyası ön-ayrıştırması yapılıyor: %1%%%%2%" msgid "+-> Pre-parsing FLAC file: 100%\n" msgstr "+-> FLAC dosyası ön-ayrıştırması yapılıyor: %100\n" -#: src/merge/pr_generic.cpp:1441 +#: src/merge/pr_generic.cpp:1432 #, boost-format msgid ", description '%1%'" msgstr ", tanımı '%1%'" -#: src/merge/pr_generic.cpp:1442 +#: src/merge/pr_generic.cpp:1433 #, boost-format msgid ", file name '%1%'" msgstr ", dosya adı '%1%'" @@ -1780,13 +1778,13 @@ msgstr ", ya ya da ürünü içermek zorundadır." msgid " is missing the child." msgstr " eksik ürünü." -#: src/input/r_matroska.cpp:1997 +#: src/input/r_matroska.cpp:1986 #, boost-format msgid "A block group was found at position %1%, but no block element was found inside it. This might make mkvmerge crash.\n" msgstr "%1% konumunda bir blok grubu bulundu ama içinde blok öğesi bulunmadı. Bu mkvmerge'ü çökertebilir.\n" -#: src/input/r_matroska.cpp:1897 -#: src/input/r_matroska.cpp:2007 +#: src/input/r_matroska.cpp:1886 +#: src/input/r_matroska.cpp:1996 #, boost-format msgid "A block was found at timestamp %1% for track number %2%. However, no headers where found for that track number. The block will be skipped.\n" msgstr "İz numarası %2% için %1% zaman damgasında bir blok bulundu. Ancak, bu iz numarası için bulunan başlıklar yok. Blok atlanacak.\n" @@ -1844,7 +1842,7 @@ msgstr "" msgid "A track" msgstr "İz" -#: src/merge/pr_generic.cpp:1311 +#: src/merge/pr_generic.cpp:1302 #, boost-format msgid "A track with the ID %1% was requested but not found in the file. The corresponding option will be ignored.\n" msgstr "ID %1% ile bir iz istendi ama dosyada bulunamadı. İlgili seçenek yoksayılacak.\n" @@ -1929,11 +1927,15 @@ msgstr "" "noktalı harfler v.s. gibi)" #: src/input/r_avc.h:32 -#: src/output/p_avc.h:42 #: src/output/p_mpeg4_p10.h:34 msgid "AVC/h.264" msgstr "AVC/h.264" +#: src/output/p_avc.h:42 +#, fuzzy +msgid "AVC/h.264 (unframed)" +msgstr "AVC/h.264" + #: src/common/file_types.cpp:27 msgid "AVC/h.264 elementary streams" msgstr "AVC/h.264 temel akışları" @@ -2172,13 +2174,13 @@ msgstr "İşaretsiz tamsayı beklendi." #: src/mmg/wx_kax_analyzer.cpp:36 msgid "Analysis is running" -msgstr "Analiz çalışıyor" +msgstr "Çözümleme çalışıyor" #: src/mmg/cli_options_dlg.cpp:128 msgid "Analyze MPEG4 bitstreams, put each frame into one Matroska block, use proper timestamping (I P B B = 0 120 40 80), use V_MPEG4/ISO/... CodecIDs." msgstr "MPEG4 bit akışlarını çözümleyin, her kareyi bir Matroska bloğu içine koyun, doğru bir şekilde zaman damgalaması (I P B B = 0 120 40 80) kullanın, V_MPEG4/ISO/... KodekID'leri kullanın." -#: src/merge/pr_generic.cpp:528 +#: src/merge/pr_generic.cpp:519 #, boost-format msgid "Another default track for %1% tracks has already been set. The 'default' flag for track %2% of '%3%' will not be set.\n" msgstr "%1% iz için başka bir varsayılan iz zaten ayarlandı. İz %2% / '%3%' için 'varsayılan' işaret ayarlanmayacak.\n" @@ -2230,7 +2232,7 @@ msgstr "Ekli" msgid "Attached files" msgstr "Ekli dosyalar" -#: src/merge/pr_generic.cpp:1440 +#: src/merge/pr_generic.cpp:1431 #, boost-format msgid "Attachment ID %1%: type '%2%', size %3% bytes" msgstr "Ek ID %1%: türü '%2%', boyutu %3% bayt" @@ -2349,7 +2351,7 @@ msgstr "Blok grubu" msgid "Block virtual: %1%" msgstr "Blok sanalı: %1%" -#: src/input/r_vobsub.cpp:547 +#: src/input/r_vobsub.cpp:548 #, boost-format msgid "Bogus aid %1%\n" msgstr "Sahte yardım %1%\n" @@ -2358,11 +2360,11 @@ msgstr "Sahte yardım %1%\n" msgid "Boolean (yes/no, on/off etc)" msgstr "Boolean (evet/hayır, açık/kapalı v.s.)" -#: src/merge/pr_generic.cpp:196 +#: src/merge/pr_generic.cpp:194 msgid "Both the aspect ratio and '--display-dimensions' were given.\n" msgstr "En boy oranı ve '--display-dimensions' ikisi birden verildi.\n" -#: src/merge/pr_generic.cpp:194 +#: src/merge/pr_generic.cpp:192 msgid "Both the aspect ratio factor and '--display-dimensions' were given.\n" msgstr "En boy oranı etkeni ve '--display-dimensions' ikisi birden verildi.\n" @@ -2393,7 +2395,7 @@ msgstr "Sağlamaları hesapla ve görüntüle ve ayrıntılı seviye 4 kullan." msgid "Calculate and display checksums of frame contents." msgstr "Kare içeriklerinin sağlamalarını hesapla ve görüntüle." -#: src/output/p_mpeg4_p2.cpp:117 +#: src/output/p_mpeg4_p2.cpp:114 msgid "Cannot convert non-native MPEG4 video frames into native ones if the source container provides neither timecodes nor a number of frames per second.\n" msgstr "" @@ -2525,9 +2527,9 @@ msgid "Chapter files (*.xml;*.txt;*.cue)|*.xml;*.txt;*.cue|%s" msgstr "Bölüm dosyaları (*.xml;*.txt;*.cue)|*.xml;*.txt;*.cue|%s" #: src/mmg/tabs/chapters.cpp:561 -#, fuzzy, c-format, boost-format +#, c-format, boost-format msgid "Chapter files (*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue)|*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue|%s" -msgstr "Bölüm dosyaları (*.xml;*.txt;*.mka;*.mkv;*.mk3d;*.cue)|*.xml;*.txt;*.mka;*.mkv;*.mk3d;*.cue|%s" +msgstr "Bölüm dosyaları (*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue)|*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue|%s" #: src/mmg/tabs/chapters.cpp:366 msgid "Chapter names and languages" @@ -2588,7 +2590,7 @@ msgstr "Bölümler yazıldı." msgid "Chapters:" msgstr "Bölümler:" -#: src/merge/pr_generic.cpp:1443 +#: src/merge/pr_generic.cpp:1434 #, boost-format msgid "Chapters: %1% entries" msgstr "Bölüm: %1% girdi" @@ -2811,7 +2813,7 @@ msgstr "Komut satırı kullanımı:" msgid "Common languages" msgstr "Genel diller" -#: src/merge/pr_generic.cpp:804 +#: src/merge/pr_generic.cpp:795 #, boost-format msgid "Compression failed: %1%\n" msgstr "Sıkıştırma başarısız oldu: %1%\n" @@ -2877,16 +2879,16 @@ msgstr "'%s' dosyası oluşturulamadı." msgid "Could not create the specified file." msgstr "Belirtilmiş dosya oluşturulamadı." -#: src/input/r_avi.cpp:354 +#: src/input/r_avi.cpp:349 msgid "Could not extract the decoder specific config data (AVCC) from this AVC/h.264 track.\n" msgstr "AVC/h.264 izinden çözücü belirli yapılandırma verisi (AVCC) çıkartılamadı.\n" -#: src/input/r_avi.cpp:300 -#: src/input/r_avi.cpp:305 +#: src/input/r_avi.cpp:298 +#: src/input/r_avi.cpp:303 msgid "Could not extract the sequence header from this MPEG-1/2 track.\n" msgstr "Bu MPEG-1/2 izinden sıralı başlık çıkartılamadı.\n" -#: src/input/r_avi.cpp:454 +#: src/input/r_avi.cpp:449 #, boost-format msgid "Could not find an index for audio track %1% (avilib error message: %2%). Skipping track.\n" msgstr "Ses izi %1% için bir indeks bulunamadı (avilib hata mesajı: %2%). İz atlanıyor.\n" @@ -2896,7 +2898,7 @@ msgstr "Ses izi %1% için bir indeks bulunamadı (avilib hata mesajı: %2%). İz msgid "Could not find gptzr when appending. %1%\n" msgstr "Eklenirken gptzr bulunamadı. %1%\n" -#: src/output/p_mpeg4_p2.cpp:181 +#: src/output/p_mpeg4_p2.cpp:178 msgid "Could not find the codec configuration data in the first MPEG-4 part 2 video frame. This track cannot be stored in native mode.\n" msgstr "Kodek yapılandırma verisi ilk MPEG-4 kısım 2 görüntü karesinde bulunamadı. Bu iz yerel kip içinde depolanamıyor.\n" @@ -2904,7 +2906,7 @@ msgstr "Kodek yapılandırma verisi ilk MPEG-4 kısım 2 görüntü karesinde bu msgid "Could not find the next Ogg page. This indicates a damaged Ogg/Ogm file. Will try to continue.\n" msgstr "Sonraki Ogg sayfasında bulunamadı. Bu, hasarlı bir Ogg/Ogm dosyasını belirtir. Devam etmek için tekrarlanacak.\n" -#: src/input/r_avi.cpp:620 +#: src/input/r_avi.cpp:607 #: src/input/r_matroska.cpp:1464 msgid "Could not find valid DTS headers in this track's first frames.\n" msgstr "Bu izin ilk karelerinde geçerli DTS başlıkları bulunamadı.\n" @@ -3131,7 +3133,7 @@ msgstr "&Sil" msgid "DTS" msgstr "DTS" -#: src/output/p_dts.cpp:70 +#: src/output/p_dts.cpp:69 msgid "DTS header information changed! - New format:\n" msgstr "DTS başlığı bilgisi değişti! - Yeni biçim:\n" @@ -3552,7 +3554,7 @@ msgstr "" "Hata: hiç çıktı dosya adı verilmedi.\n" "\n" -#: src/output/p_vorbis.cpp:62 +#: src/output/p_vorbis.cpp:63 msgid "Error: vorbis_packetizer: Could not extract the stream's parameters from the first packets.\n" msgstr "Hata: vorbis_packetizer: Akışın parametreleri ilk paketlerden çıkartılamadı.\n" @@ -3604,17 +3606,17 @@ msgid "Extract the data to a raw file." msgstr "Veriyi ham dosyaya çıkart." #: src/output/p_avc.cpp:147 -#: src/output/p_mpeg4_p10.cpp:74 +#: src/output/p_mpeg4_p10.cpp:77 #, boost-format msgid "Extracted the aspect ratio information from the MPEG-4 layer 10 (AVC) video data and set the display dimensions to %1%/%2%.\n" msgstr "" -#: src/output/p_mpeg4_p2.cpp:337 +#: src/output/p_mpeg4_p2.cpp:331 #, boost-format msgid "Extracted the aspect ratio information from the MPEG4 layer 2 video data and set the display dimensions to %1%/%2%.\n" msgstr "" -#: src/output/p_theora.cpp:74 +#: src/output/p_theora.cpp:73 #, boost-format msgid "Extracted the aspect ratio information from the Theora video headers and set the display dimensions to %1%/%2%.\n" msgstr "" @@ -3682,12 +3684,12 @@ msgstr "Aile UID: %1%" msgid "File %1% has unknown type. Please have a look at the supported file types ('mkvmerge --list-types') and contact the author Moritz Bunkus if your file type is supported but not recognized properly.\n" msgstr "Dosya %1%, bilinmeyen türe sahip. Lütfen desteklenen dosya türlerine ('mkvmerge --list-types') bir bakın ve dosya türünüz destekleniyor ama doğru bir şekilde tanınmıyorsa, yazar Moritz Bunkus ile temasa geçin.\n" -#: src/merge/pr_generic.cpp:1438 +#: src/merge/pr_generic.cpp:1429 #, boost-format msgid "File '%1%': container: %2%" msgstr "Dosya '%1%': kalıp: %2%" -#: src/merge/pr_generic.cpp:1692 +#: src/merge/pr_generic.cpp:1665 #, boost-format msgid "File '%1%': unsupported container: %2%\n" msgstr "Dosya '%1%': desteklenmeyen kalıp: %2%\n" @@ -3697,8 +3699,8 @@ msgstr "Dosya '%1%': desteklenmeyen kalıp: %2%\n" msgid "File UID: %1%" msgstr "Dosya UID: %1%" -#: src/input/r_real.cpp:432 -#: src/input/r_real.cpp:441 +#: src/input/r_real.cpp:429 +#: src/input/r_real.cpp:438 #, boost-format msgid "File contains fewer frames than expected or is corrupt after frame %1%.\n" msgstr "" @@ -3794,9 +3796,8 @@ msgid "Finished processing on %s" msgstr "İşlemin bitme zamanı %s" #: src/mmg/tabs/input_format.cpp:260 -#, fuzzy msgid "Fix bitstream timing information" -msgstr "Bilgi kaydetme hatası" +msgstr "Bit akışı zamanlaması bilgisini düzelt" #: src/mmg/tabs/chapters.cpp:354 msgid "Flags:" @@ -3921,7 +3922,7 @@ msgstr "Genel seçenekler" msgid "Global tags (%d entries) from %s" msgstr "Genel etiket (%d girdi), dosya: %s" -#: src/merge/pr_generic.cpp:1444 +#: src/merge/pr_generic.cpp:1435 #, boost-format msgid "Global tags: %1% entries" msgstr "Genel etiket: %1% girdi" @@ -4076,7 +4077,7 @@ msgstr "Eğer bir yayın 'varsayılan' olarak işaretlenirse sonrasında varsay #: src/mmg/options/output.cpp:51 msgid "If checked mmg make sure the suggested output file name is unique by adding a number (e.g. ' (1)') to the end of the file name. This is only done if the unmodified file name already exists." -msgstr "" +msgstr "Eğer işaretlenirse, mmg dosya adının en sonuna bir numara (örn. ' (1)') ekleyerek önerilen çıktı dosyası adının benzersiz olduğundan emin olur. Bu sadece değiştirilmemiş dosya adı zaten mevcutsa yapılır." #: src/mmg/options/output.cpp:55 msgid "If checked mmg will ask for confirmation before overwriting existing files, or before adding a new job if there's an old job whose description matches the new one." @@ -4101,13 +4102,13 @@ msgstr "Eğer çıktı olan görüntü izi yoksa bölme meydana gelmeyecek." #: src/mmg/tabs/attachments.cpp:166 msgid "If splitting is a file can be attached either to all files created or only to the first file. Has no effect if no splitting is used." -msgstr "" +msgstr "Eğer bölünen bir dosya ise ya oluşturulan tüm dosyalara ya da sadece ilk dosyaya eklenebilir. Eğer kullanılan bölünme yoksa etkisi olmaz." #: src/mmg/mmg_dialog.cpp:1978 msgid "If you encounter problems during playback of files please consider visiting the newly created MKVToolNix troubleshooting advice page:" msgstr "Eğer dosyaların oynatılması sırasında sorunlarla karşılaşıyorsanız lütfen yeni oluşturulmuş MKVToolNix sorun giderme yardımcısı sayfasını ziyaret etmeyi düşünün:" -#: src/output/p_textsubs.cpp:69 +#: src/output/p_textsubs.cpp:64 #, boost-format msgid "Ignoring an entry which starts after it ends (%1%).\n" msgstr "Bittikten sonra başlayan giriş yoksayılıyor (%1%).\n" @@ -4130,7 +4131,7 @@ msgstr "Uyumsuz mkvmerge sürümü" msgid "Incompatible track" msgstr "Uyumsuz iz" -#: src/input/r_real.cpp:570 +#: src/input/r_real.cpp:567 #, boost-format msgid "Inconsistent AAC audio packet (length: %1% != len_check %2%)\n" msgstr "Tutarsız AAC ses paketi (uzunluk: %1% != len_check %2%)\n" @@ -4215,9 +4216,9 @@ msgstr "Geçersiz UID. Bu yayın UID'si zaten kullanımda. Orijinal UID değişt msgid "Invalid UTF-8 char. First byte: 0x%|1$02x|" msgstr "Geçersiz UTF-8 kar. İlk bayt: 0x%|1$02x|" -#: src/input/r_avi.cpp:629 -#: src/input/r_avi.cpp:634 -#: src/input/r_avi.cpp:651 +#: src/input/r_avi.cpp:616 +#: src/input/r_avi.cpp:621 +#: src/input/r_avi.cpp:638 msgid "Invalid Vorbis headers in AVI audio track." msgstr "AVI ses izinde geçersiz Vorbis başlıkları." @@ -4236,9 +4237,9 @@ msgid "Invalid boolean option specified in '--default-track %1%'.\n" msgstr "'--default-track %1%' içinde belirtilmiş geçersiz boolean seçeneği.\n" #: src/merge/mkvmerge.cpp:1415 -#, fuzzy, boost-format +#, boost-format msgid "Invalid boolean option specified in '--fix-bitstream-timing-information %1%'.\n" -msgstr "'--forced-track %1%' içinde belirtilmiş geçersiz boolean seçeneği.\n" +msgstr "'--fix-bitstream-timing-information %1%' içinde belirtilmiş geçersiz boolean seçeneği.\n" #: src/merge/mkvmerge.cpp:1067 #, boost-format @@ -4393,7 +4394,7 @@ msgstr "Geçersiz biçim: bilinmeyen karakter '%1%' bulundu" msgid "Invalid frame for '--split' in '--split %1%'.\n" msgstr "'--split %1%' içinde '--split' için geçersiz kare.\n" -#: src/input/r_vobsub.cpp:530 +#: src/input/r_vobsub.cpp:531 #, boost-format msgid "Invalid header length: %1% (total length: %2%, idx: %3%, dataidx: %4%)\n" msgstr "Geçersiz başlık uzunluğu: %1% (toplam uzunluk: %2%, idx: %3%, dataidx: %4%)\n" @@ -4405,7 +4406,7 @@ msgstr "Geçersiz dil seçildi" #: src/common/xml/ebml_converter.cpp:268 msgid "Invalid length of hexadecimal content: must be divisable by 2." -msgstr "" +msgstr "Onaltılık içeriğin geçersiz uzunluğu: 2'nin bölenleri olmak zorundadır." #: src/common/chapters/chapters.cpp:193 #, boost-format @@ -4456,7 +4457,7 @@ msgstr "'--split %1%' içinde '--split' için geçersiz başlama karesi/alanı n msgid "Invalid start frame/field number for '--split' in '--split %1%' (current part: %2%). The start number must be bigger than or equal to the previous part's end number.\n" msgstr "'--split %1%' içindeki '--split' için geçersiz başlama karesi/alanı numarası (şu anki kısım %2%). Başlama numarası önceki kısmın bitiş numarasından daha büyük ya da eşit olmak zorundadır.\n" -#: src/input/r_usf.cpp:207 +#: src/input/r_usf.cpp:208 msgid "Invalid start or stop timecode" msgstr "Geçersiz başlatma ve durdurma zaman kodu" @@ -4564,9 +4565,9 @@ msgid "Invalid track ID specified in '--default-track %1%'.\n" msgstr "'--default-track %1%' içinde belirtilmiş geçersiz iz ID.\n" #: src/merge/mkvmerge.cpp:1409 -#, fuzzy, boost-format +#, boost-format msgid "Invalid track ID specified in '--fix-bitstream-timing-information %1%'.\n" -msgstr "'--forced-track %1%' içinde belirtilmiş geçersiz iz ID.\n" +msgstr "'--fix-bitstream-timing-information %1%' içinde belirtilmiş geçersiz iz ID.\n" #: src/merge/mkvmerge.cpp:1061 #, boost-format @@ -4603,11 +4604,11 @@ msgstr "İş çıktısı" msgid "Job queue management" msgstr "İş kuyruğu yönetimi" -#: src/output/p_kate.h:40 +#: src/output/p_kate.h:39 msgid "Kate" msgstr "Kate" -#: src/output/p_kate.cpp:77 +#: src/output/p_kate.cpp:69 msgid "Kate packet is too small and is being skipped.\n" msgstr "Kate paketi çok küçük ve atlanıyor.\n" @@ -4666,39 +4667,39 @@ msgstr "İsteğe bağlı seçenekleri komut satırına eklemenize izin verir" #: src/merge/timecode_factory.cpp:356 #, boost-format msgid "Line %1% of the timecode file '%2%' contains inconsistent data (e.g. the duration or the FPS are smaller than zero).\n" -msgstr "" +msgstr "'%2%' zaman kodu dosyasının %1%. satırı tutarsız veri içeriyor (örn. süre ya da FPS sıfırdan küçük).\n" #: src/merge/timecode_factory.cpp:119 #, boost-format msgid "Line %1% of the timecode file '%2%' contains inconsistent data (e.g. the start frame number is bigger than the end frame number, or some values are smaller than zero).\n" -msgstr "" +msgstr "'%2%' zaman kodu dosyasının %1%. satırı tutarsız veri içeriyor (örn. başlangıç karesi numarası bitiş karesi numarasından büyük ya da bazı değerler sıfırdan küçük).\n" #: src/merge/timecode_factory.cpp:114 #: src/merge/timecode_factory.cpp:349 #, boost-format msgid "Line %1% of the timecode file '%2%' could not be parsed.\n" -msgstr "" +msgstr "'%2%' zaman kodu dosyasının %1%. satırı ayrıştırılamadı.\n" #: src/input/subtitles.cpp:198 #, boost-format msgid "Line %1%: Negative timestamp encountered. The entry will be adjusted to start from 00:00:00.000.\n" -msgstr "" +msgstr "Satır %1%: Olumsuz zaman damgasıyla karşılaştı. Giriş 00:00:00.000'dan başlamaya ayarlanacaktır. \n" -#: src/input/r_vobsub.cpp:292 +#: src/input/r_vobsub.cpp:293 #, boost-format msgid "Line %1%: The current timestamp (%2%) is smaller than the previous one (%3%). The entries will be sorted according to their timestamps. This might result in the wrong order for some subtitle entries. If this is the case then you have to fix the .idx file manually.\n" -msgstr "" +msgstr "Satır %1%: Şu anki zaman damgası (%2%) öncekinden (%3%) küçük. Girişler zaman damgalarına göre sıralanacaktır. Bu, bazı altyazıların girişleri için yanlış sırada sonuçlanabilir. Eğer durum buysa, o zaman .idx dosyasını el ile düzeltmek zorundasınız.\n" -#: src/input/r_vobsub.cpp:242 -#: src/input/r_vobsub.cpp:265 +#: src/input/r_vobsub.cpp:243 +#: src/input/r_vobsub.cpp:266 #, boost-format msgid "Line %1%: The line seems to be a subtitle entry but the format couldn't be recognized. This entry will be skipped.\n" -msgstr "" +msgstr "Satır %1%: Satır bir altyazı girişi olarak görünüyor ancak biçim tanınamadı. Bu giriş atlanacaktır.\n" -#: src/input/r_vobsub.cpp:282 +#: src/input/r_vobsub.cpp:283 #, boost-format msgid "Line %1%: The line seems to be a subtitle entry but the timecode was negative even after adding the track delay. Negative timecodes are not supported in Matroska. This entry will be skipped.\n" -msgstr "" +msgstr "Satır %1%: Satır bir altyazı girişi olarak görünüyor ancak zaman kodu iz geçikmesi eklendikten sonra bile olumsuz. Olumsuz zaman kodları Matroska içinde desteklenmez. Bu giriş atlanacaktır.\n" #: src/propedit/propedit_cli_parser.cpp:192 msgid "List all valid property names and exit" @@ -4937,7 +4938,7 @@ msgstr "Eksik dosya adı" msgid "Missing file name after for the option '--edit-headers'." msgstr "'--edit-headers' seçeneği sonrasındaki dosya adı eksik." -#: src/input/r_ogm.cpp:949 +#: src/input/r_ogm.cpp:948 msgid "Missing header/comment packets for stream. This file is broken but should be muxed correctly. If not please contact the author Moritz Bunkus .\n" msgstr "Akış için eksik başlık/yorum paketleri. Bu dosya bozuk ama doğru olarak çoklanmalı. Eğer değilse lütfen yazarı Moritz Bunkus ile temasa geçin.\n" @@ -5084,7 +5085,7 @@ msgstr "Sonraki parçanın benzersiz ID'si" msgid "No %1% specified in '--%2% %3%'.\n" msgstr "'--%2% %3%' içinde belirtilmiş %1% yok.\n" -#: src/input/r_qtmp4.cpp:1209 +#: src/input/r_qtmp4.cpp:1208 msgid "No AC3 header found in first frame; track will be skipped.\n" msgstr "İlk karede bulunan AC3 başlığı yok; iz atlanacak.\n" @@ -5246,7 +5247,7 @@ msgstr "Geçerli Matroska dosyası değil (parça yok/seviye 0 unsuru bulundu)" msgid "Not a valid number or not positive." msgstr "Geçerli bir sayı değil yada olumlu değil." -#: src/merge/pr_generic.cpp:1155 +#: src/merge/pr_generic.cpp:1146 #, boost-format msgid "Note that the Matroska specifications regarding the storage of '%1%' have not been finalized yet. mkvmerge's support for it is therefore subject to change and uses the CodecID '%2%/EXPERIMENTAL' instead of '%2%'. This warning will be removed once the specifications have been finalized and mkvmerge has been updated accordingly.\n" msgstr "" @@ -5460,7 +5461,7 @@ msgstr "PGS/SUP altyazıları" msgid "PGSSUP" msgstr "PGSSUP" -#: src/input/r_vobsub.cpp:538 +#: src/input/r_vobsub.cpp:539 #, boost-format msgid "PTS error: 0x%|1$02x| %|2$02x|%|3$02x| %|4$02x|%|5$02x|\n" msgstr "PTS hatası: 0x%|1$02x| %|2$02x|%|3$02x| %|4$02x|%|5$02x|\n" @@ -5470,7 +5471,7 @@ msgstr "PTS hatası: 0x%|1$02x| %|2$02x|%|3$02x| %|4$02x|%|5$02x|\n" msgid "Packet number %1% contained an invalid FLAC header and is being skipped.\n" msgstr "Paket numarası %1% geçersiz bir FLAC başlığı içerdi ve atlanmakta.\n" -#: src/merge/pr_generic.cpp:257 +#: src/merge/pr_generic.cpp:254 #, boost-format msgid "Packet queue not empty (flushed: %1%). Frames have been lost during remux. %2%\n" msgstr "Paket kuyruğu boş değil (temizlenen: %1%). Kareler yeniden çoklama sırasında kayboldu. %2%\n" @@ -5637,46 +5638,46 @@ msgstr "QuickTime ses/görüntü dosyaları" msgid "QuickTime/MP4" msgstr "QuickTime/MP4" -#: src/input/r_qtmp4.cpp:322 +#: src/input/r_qtmp4.cpp:321 #, boost-format msgid "Quicktime/MP4 reader: '%1%' atom is too small. Expected size: >= %2%. Actual size: %3%.\n" msgstr "Quicktime/MP4 okuyucusu: '%1%' atomu çok küçük. Beklenen boyut: >= %2%. Asıl boyut: %3%.\n" -#: src/input/r_qtmp4.cpp:1794 +#: src/input/r_qtmp4.cpp:1776 msgid "Quicktime/MP4 reader: Constant samplesize & variable duration not yet supported. Contact the author if you have such a sample file.\n" msgstr "Quicktime/MP4 okuyucusu: Sabit örnek boyutu ve değişken süresi henüz desteklenmiyor. Böyle bir örnek dosyaya sahipseniz hazırlayanı ile temasa geçin.\n" -#: src/input/r_qtmp4.cpp:1166 +#: src/input/r_qtmp4.cpp:1165 #, boost-format msgid "Quicktime/MP4 reader: Could not read chunk number %1%/%2% with size %3% from position %4%. Aborting.\n" msgstr "Quicktime/MP4 okuyucusu: %4% konumundan %3% boyutu ile iri parça numarası %1%/%2% okunamadı. Durduruluyor.\n" -#: src/input/r_qtmp4.cpp:2099 -#: src/input/r_qtmp4.cpp:2113 +#: src/input/r_qtmp4.cpp:2081 +#: src/input/r_qtmp4.cpp:2095 #, boost-format msgid "Quicktime/MP4 reader: Could not read the extended sound description atom for track ID %1%.\n" msgstr "Quicktime/MP4 okuyucusu: İz ID %1% için genişletilmiş ses tanımlama atomu okunamadı.\n" -#: src/input/r_qtmp4.cpp:2070 +#: src/input/r_qtmp4.cpp:2052 #, boost-format msgid "Quicktime/MP4 reader: Could not read the sound description atom for track ID %1%.\n" msgstr "Quicktime/MP4 okuyucusu: İz ID %1% için ses tanımlama atomu okunamadı.\n" -#: src/input/r_qtmp4.cpp:914 +#: src/input/r_qtmp4.cpp:913 #, boost-format msgid "Quicktime/MP4 reader: Could not read the stream description atom for track ID %1%.\n" msgstr "Quicktime/MP4 okuyucusu: İz ID %1% için akış tanımlama atomu okunamadı.\n" -#: src/input/r_qtmp4.cpp:2145 +#: src/input/r_qtmp4.cpp:2127 #, boost-format msgid "Quicktime/MP4 reader: Could not read the video description atom for track ID %1%.\n" msgstr "Quicktime/MP4 okuyucusu: İz ID %1% için görüntü tanımlama atomu okunamadı.\n" -#: src/input/r_qtmp4.cpp:254 +#: src/input/r_qtmp4.cpp:253 msgid "Quicktime/MP4 reader: Have not found any header atoms.\n" msgstr "Quicktime/MP4 okuyucusu: Herhangi bir başlık atomları bulunmadı.\n" -#: src/input/r_qtmp4.cpp:256 +#: src/input/r_qtmp4.cpp:255 msgid "Quicktime/MP4 reader: Have not found the 'mdat' atom. No movie data found.\n" msgstr "Quicktime/MP4 okuyucusu: 'mdat' atomu bulunmadı. Bulunan film verisi yok.\n" @@ -5685,75 +5686,75 @@ msgstr "Quicktime/MP4 okuyucusu: 'mdat' atomu bulunmadı. Bulunan film verisi yo msgid "Quicktime/MP4 reader: Invalid chunk size %1% at %2%.\n" msgstr "Quicktime/MP4 okuyucusu: %2%'de geçersiz iri parça boyutu %1%.\n" -#: src/input/r_qtmp4.cpp:2520 +#: src/input/r_qtmp4.cpp:2502 #, boost-format msgid "Quicktime/MP4 reader: MPEG4 part 10/AVC track %1% is missing its decoder config. Skipping this track.\n" msgstr "Quicktime/MP4 okuyucusu: MPEG4 kısım 10/AVC izi %1%, çözücü yapılandırmasında eksik. Bu iz atlanıyor.\n" -#: src/input/r_qtmp4.cpp:2551 +#: src/input/r_qtmp4.cpp:2533 #, boost-format msgid "Quicktime/MP4 reader: MPEG4 track %1% is missing the esds atom/the decoder config. Skipping this track.\n" msgstr "Quicktime/MP4 okuyucusu: MPEG4 izi %1% eksik esds atomu/çözücü yapılandırması. Bu iz atlanıyor.\n" -#: src/input/r_qtmp4.cpp:491 +#: src/input/r_qtmp4.cpp:490 #, boost-format msgid "Quicktime/MP4 reader: The 'media header' atom ('mdhd') uses the unsupported version %1%.\n" msgstr "Quicktime/MP4 okuyucusu: 'Medya başlığı' atomu ('mdhd') desteklenmeyen sürüm %1% kullanıyor.\n" -#: src/input/r_qtmp4.cpp:907 +#: src/input/r_qtmp4.cpp:906 #, boost-format msgid "Quicktime/MP4 reader: The 'size' field is too small in the stream description atom for track ID %1%.\n" msgstr "Quicktime/MP4 okuyucusu: İz ID %1% için akış açıklaması atomu içindeki 'boyut' alanı çok küçük.\n" -#: src/input/r_qtmp4.cpp:496 +#: src/input/r_qtmp4.cpp:495 msgid "Quicktime/MP4 reader: The 'time scale' parameter was 0. This is not supported.\n" msgstr "Quicktime/MP4 okuyucusu: 'Zaman ölçeği' parametresi 0'dır. Bu desteklenmez.\n" -#: src/input/r_qtmp4.cpp:2483 +#: src/input/r_qtmp4.cpp:2465 #, boost-format msgid "Quicktime/MP4 reader: The AAC track %1% is missing the esds atom/the decoder config. Skipping this track.\n" msgstr "Quicktime/MP4 okuyucusu: AAC izi %1% eksik esds atomu/çözücü yapılandırması. Bu iz atlanıyor.\n" -#: src/input/r_qtmp4.cpp:2478 +#: src/input/r_qtmp4.cpp:2460 #, boost-format msgid "Quicktime/MP4 reader: The audio track %1% is using an unsupported 'object type id' of %2% in the 'esds' atom. Skipping this track.\n" msgstr "Quicktime/MP4 okuyucusu: Ses izi %1%, 'esds' atomu içinde desteklenmeyen %2% 'nesne türü id' kullanıyor. Bu iz atlanıyor.\n" -#: src/input/r_qtmp4.cpp:2530 +#: src/input/r_qtmp4.cpp:2512 #, boost-format msgid "Quicktime/MP4 reader: The video track %1% is missing the ESDS atom. Skipping this track.\n" msgstr "Quicktime/MP4 okuyucusu: Görüntü izi %1%, ESDS atomu eksik. Bu iz atlanıyor.\n" -#: src/input/r_qtmp4.cpp:354 +#: src/input/r_qtmp4.cpp:353 #, boost-format msgid "Quicktime/MP4 reader: This file uses compressed headers with an unknown or unsupported compression algorithm '%1%'. Aborting.\n" msgstr "Quicktime/MP4 okuyucusu: Bu dosya, bilinmeyen veya desteklenmeyen sıkıştırma algoritması '%1%' ile sıkıştırılmış başlıkları kullanır. Durduruluyor.\n" -#: src/input/r_qtmp4.cpp:387 +#: src/input/r_qtmp4.cpp:386 #, boost-format msgid "Quicktime/MP4 reader: This file uses compressed headers, but the expected uncompressed size (%1%) was not what is available after uncompressing (%2%).\n" msgstr "Quicktime/MP4 okuyucusu: Bu dosya sıkıştırılmış başlıkları kullanıyor ama beklenen genişletilmiş boyut (%1%), genişletildikten (%2%) sonra kullanılabilir olan değildir.\n" -#: src/input/r_qtmp4.cpp:378 +#: src/input/r_qtmp4.cpp:377 #, boost-format msgid "Quicktime/MP4 reader: This file uses compressed headers, but the zlib library could not be initialized. Error code from zlib: %1%. Aborting.\n" msgstr "Quicktime/MP4 okuyucusu: Bu dosya sıkıştırılmış başlıkları kullanıyor ama zlib kütüphanesi başlatılamadı. zlib'ten hata kodu: %1%. Durduruluyor.\n" -#: src/input/r_qtmp4.cpp:383 +#: src/input/r_qtmp4.cpp:382 #, boost-format msgid "Quicktime/MP4 reader: This file uses compressed headers, but they could not be uncompressed. Error code from zlib: %1%. Aborting.\n" msgstr "Quicktime/MP4 okuyucusu: Bu dosya sıkıştırılmış başlıkları kullanıyor ama genişletilemediler. zlib'ten hata kodu: %1%. Durduruluyor.\n" -#: src/input/r_qtmp4.cpp:2451 -#: src/input/r_qtmp4.cpp:2466 -#: src/input/r_qtmp4.cpp:2504 -#: src/input/r_qtmp4.cpp:2569 +#: src/input/r_qtmp4.cpp:2433 +#: src/input/r_qtmp4.cpp:2448 +#: src/input/r_qtmp4.cpp:2486 +#: src/input/r_qtmp4.cpp:2551 #, boost-format msgid "Quicktime/MP4 reader: Track %1% is missing some data. Broken header atoms?\n" msgstr "Quicktime/MP4 okuyucusu: İz %1% bazı verisi eksik. Bozuk başlık atomları olabilir mi?\n" -#: src/input/r_qtmp4.cpp:2078 -#: src/input/r_qtmp4.cpp:2152 +#: src/input/r_qtmp4.cpp:2060 +#: src/input/r_qtmp4.cpp:2134 #, boost-format msgid "Quicktime/MP4 reader: Track ID %1% has more than one FourCC. Only using the first one (%|2$.4s|) and not this one (%|3$.4s|).\n" msgstr "Quicktime/MP4 okuyucusu: İz ID %1% birden fazla FourCC'ye sahip. Sadece ilk (%|2$.4s|) olan kullanılıyor ve bu (%|3$.4s|) olan değil.\n" @@ -5800,7 +5801,7 @@ msgstr "Hazır" msgid "Real output sampling frequency in Hz." msgstr "Hz. olarak gerçek çıktı örnekleme sıklığı." -#: src/output/p_realaudio.h:35 +#: src/output/p_realaudio.h:34 msgid "RealAudio" msgstr "RealAudio" @@ -5812,7 +5813,7 @@ msgstr "RealMedia" msgid "RealMedia audio/video files" msgstr "RealMedia ses/görüntü dosyası" -#: src/input/r_real.cpp:343 +#: src/input/r_real.cpp:338 #, boost-format msgid "RealMedia files may contain HE-AAC / AAC+ / SBR AAC audio. In some cases this can NOT be detected automatically. Therefore you have to specifiy '--aac-is-sbr %1%' manually for this input file if the file actually contains SBR AAC. The file will be muxed in the WRONG way otherwise. Also read mkvmerge's documentation.\n" msgstr "RealMedia dosyaları HE-AAC / AAC+ / SBR AAC sesi içerebilir. Bazı durumlarda bu otomatik olarak algılanmayabilir. Bundan dolayı eğer dosya aslında SBR AAC içeriyorsa, bu girdi dosyası için el ile '--aac-is-sbr %1%' belirtmek zorundasınız. Yoksa dosya YANLIŞ yolla çoklanacaktır. Ayrıca mkvmerge'ün belgesini okuyun.\n" @@ -6270,12 +6271,12 @@ msgstr "Ayarlar: %1%" msgid "Several options that control the overall output that mkvmerge creates." msgstr "mkvmerge'ün oluşturduğu bütün çıktıyı denetleyen birkaç seçenek." -#: src/input/r_real.cpp:557 +#: src/input/r_real.cpp:554 #, boost-format msgid "Short AAC audio packet (length: %1% < %2%)\n" msgstr "Kısa AAC ses paketi (uzunluk: %1% < %2%)\n" -#: src/input/r_real.cpp:550 +#: src/input/r_real.cpp:547 #, boost-format msgid "Short AAC audio packet (length: %1% < 2)\n" msgstr "Kısa AAC ses paketi (uzunluk: %1% < 2)\n" @@ -6401,12 +6402,12 @@ msgstr "Boyut" msgid "Size:" msgstr "Boyut:" -#: src/output/p_aac.cpp:70 +#: src/output/p_aac.cpp:71 #, boost-format msgid "Skipping %1% bytes (no valid AAC header found). This might cause audio/video desynchronisation.\n" msgstr "%1% bayt atlanıyor (bulunan geçerli AAC başlığı yok). Bu, ses/görüntü eşitliliği bozukluğuna neden olabilir.\n" -#: src/output/p_dts.cpp:86 +#: src/output/p_dts.cpp:85 #, boost-format msgid "Skipping %1% bytes (no valid DTS header found). This might cause audio/video desynchronisation.\n" msgstr "%1% bayt atlanıyor (bulunan geçerli DTS başlığı yok). Bu, ses/görüntü eşitliliği bozukluğuna neden olabilir.\n" @@ -6568,7 +6569,7 @@ msgstr "Dizgi" #: src/extract/xtr_textsubs.cpp:180 #, boost-format msgid "Subtitle track %1% is missing some duration elements. Please check the resulting SSA/ASS file for entries that have the same start and end time.\n" -msgstr "" +msgstr "Bazı süre öğelerinde altyazı izi %1% eksik. Lütfen aynı başlama ve bitiş zamanına sahip olan girişler için SSA/ASS dosyası sonucunu kontrol edin.\n" #: src/mmg/header_editor/track_type_page.cpp:56 #, c-format, boost-format @@ -6623,7 +6624,7 @@ msgstr "Etiketler" msgid "Tags are not allowed in WebM compliant files. No tags will be written into any output file.\n" msgstr "WebM uyumlu dosyalarda etiketlere izin verilmez. Herhangi bir çıktı dosyasına hiç etiket yazılmadı.\n" -#: src/merge/pr_generic.cpp:1445 +#: src/merge/pr_generic.cpp:1436 #, boost-format msgid "Tags for track ID %1%: %2% entries" msgstr "İz ID %1% için etiket: %2% giriş" @@ -6658,16 +6659,16 @@ msgstr "Metin dosyaları (*.txt)|*.txt|%s" msgid "Text files (*.txt)|*.txt|All files|*.*" msgstr "Metin dosyaları (*.txt)|*.txt|Tüm dosyalar|*.*" -#: src/input/r_vobsub.cpp:235 +#: src/input/r_vobsub.cpp:236 msgid "The .idx file does not contain an 'id: ...' line to indicate the language.\n" msgstr ".idx dosyası dili gösteren 'id: ...' satırı içermiyor.\n" -#: src/output/p_aac.cpp:203 +#: src/output/p_aac.cpp:204 #, boost-format msgid "The AAC profiles are different: %1% and %2%" msgstr "AAC profilleri farklı: %1% ve %2%" -#: src/input/r_qtmp4.cpp:1267 +#: src/input/r_qtmp4.cpp:1257 msgid "The AVC video track is missing the 'CTTS' atom for frame timecode offsets. However, AVC/h.264 allows frames to have more than the traditional one (for P frames) or two (for B frames) references to other frames. The timecodes for such frames will be out-of-order, and the 'CTTS' atom is needed for getting the timecodes right. As it is missing the timecodes for this track might be wrong. You should watch the resulting file and make sure that it looks like you expected it to.\n" msgstr "" @@ -6676,7 +6677,7 @@ msgstr "" msgid "The CUE sheet for track %1% will be written to '%2%'.\n" msgstr "" -#: src/merge/pr_generic.h:477 +#: src/merge/connection_checks.h:54 msgid "The CodecID of the two tracks is different: %1% and %2%" msgstr "İki izin KodekID'leri farklı: %1% ve %2%" @@ -6709,12 +6710,12 @@ msgstr "İz numarası %s için FourCC ayarı, '%s' dosyasında tam olarak dört msgid "The GUI is configured to use the mkvmerge executable from a different version (%1%) than the GUI itself (%2%). This is not supported but will not be prevented either. You should change the mkvmerge executable in the preferences dialog." msgstr "GKA, mkvmerge çalıştırılabilir dosyasını GKA'nün kendinden (%2%) farklı bir sürümünden (%1%) kullanmak için yapılandırılır. Bu desteklenmez ama önlenmeyecektir de. Tercihler iletisindeki mkvmerge çalıştırılabilir dosyasını değiştirmelisiniz." -#: src/input/r_ogm.cpp:1495 +#: src/input/r_ogm.cpp:1485 #, boost-format msgid "The Kate identification header could not be parsed (%1%).\n" msgstr "Kate tanımlama başlığı ayrıştırılamadı (%1%).\n" -#: src/input/r_qtmp4.cpp:796 +#: src/input/r_qtmp4.cpp:795 #, boost-format msgid "The MP4 file '%1%' contains chapters whose format was not recognized. This is often the case if the chapters are not encoded in UTF-8. Use the '--chapter-charset' option in order to specify the charset to use.\n" msgstr "" @@ -6739,7 +6740,7 @@ msgstr "" msgid "The NALU size length must be a number between 2 and 4 inclusively in '--nalu-size-length %1%'.\n" msgstr "" -#: src/input/r_ogm.cpp:1325 +#: src/input/r_ogm.cpp:1319 #, boost-format msgid "The Theora identifaction header could not be parsed (%1%).\n" msgstr "Theora tanımlama başlığı ayrıştırılamadı (%1%).\n" @@ -6862,7 +6863,7 @@ msgstr "" "\n" "Not: Bu uyarı 'seçenekler' iletisinden devre dışı bırakılabilir. 'Kullanım hakkında uyar...' seçeneğini kapatın." -#: src/output/p_mpeg4_p10.cpp:162 +#: src/output/p_mpeg4_p10.cpp:164 #, boost-format msgid "The chosen NALU size length of %1% is too small. Try using '4'.\n" msgstr "Seçilen %1% NALU boyutu uzunluğu çok küçük. '4'ü deneyin.\n" @@ -6871,18 +6872,18 @@ msgstr "Seçilen %1% NALU boyutu uzunluğu çok küçük. '4'ü deneyin.\n" msgid "The closing parenthesis ')' are missing.\n" msgstr "Kapama parantezi ')' eksik.\n" -#: src/merge/pr_generic.cpp:1255 +#: src/merge/pr_generic.cpp:1246 #, boost-format msgid "The codec type '%1%' cannot be used in a WebM compliant file.\n" msgstr "Kodek türü '%1%', WebM uyum dosyasında kullanılamıyor.\n" #: src/output/p_flac.cpp:101 -#: src/merge/pr_generic.h:484 +#: src/merge/connection_checks.h:61 #, boost-format msgid "The codec's private data does not match (lengths: %1% and %2%)." msgstr "Kodek'in özel verisi eşleşmiyor (uzunlukları: %1% ve %2%)." -#: src/output/p_mpeg4_p10.cpp:109 +#: src/output/p_mpeg4_p10.cpp:110 #, boost-format msgid "The codec's private data does not match. Both have the same length (%1%) but different content." msgstr "Kodek'in özel verisi eşleşmiyor. Her ikiside aynı uzunluğa sahip (%1%) ama içerik farklı." @@ -6905,7 +6906,7 @@ msgstr "Cue girdileri (indeks) yazılıyor...\n" msgid "The current file (number %d) cannot be removed. There are other files -- at least file number %d -- whose tracks are supposed to be appended to tracks from this file. Please remove those files first." msgstr "" -#: src/merge/pr_generic.cpp:866 +#: src/merge/pr_generic.cpp:857 #, boost-format msgid "The current packet's timecode is smaller than that of the previous packet. This usually means that the source file is a Matroska file that has not been created 100%% correctly. The timecodes of all packets will be adjusted by %1%ms in order not to lose any data. This may throw audio/video synchronization off, but that can be corrected with mkvmerge's \"--sync\" option. If you already use \"--sync\" and you still get this warning then do NOT worry -- this is normal. If this error happens more than once and you get this message more than once for a particular track then either is the source file badly mastered, or mkvmerge contains a bug. In this case you should contact the author Moritz Bunkus .\n" msgstr "" @@ -6938,11 +6939,11 @@ msgstr "" msgid "The difference between tags associated with a track and global tags is explained in mkvmerge's documentation. In short: global tags apply to the complete file while the tags you can add on the 'input' tab apply to only one track." msgstr "İz ile ilişkilendirlmiş etiketler ve genel etiketler arasındaki fark mkvmerge'ün belgesinde açıklanır. Kısaca: genel etiketler tamamlanmış dosyalara uygulanırken etiketleri 'girdi' sekmesinde sadece bir ize ekleyebilirsiniz." -#: src/merge/pr_generic.h:472 +#: src/merge/connection_checks.h:49 msgid "The display height of the two tracks is different: %1% and %2%" msgstr "İki izin görüntü yüksekliği farklı: %1% ve %2%" -#: src/merge/pr_generic.h:467 +#: src/merge/connection_checks.h:44 msgid "The display width of the two tracks is different: %1% and %2%" msgstr "İki izin görüntü genişliği farklı: %1% ve %2%" @@ -6974,7 +6975,7 @@ msgstr "" msgid "The element was written at the end of the file, but the segment size could not be updated. Therefore the element will not be visible. The process will be aborted. The file has been changed!" msgstr "" -#: src/output/p_mpeg4_p2.cpp:378 +#: src/output/p_mpeg4_p2.cpp:372 #, boost-format msgid "The extracted values for video width and height from the MPEG4 layer 2 video data bitstream differ from what the values in the source container. The ones from the video data bitstream (%1%x%2%) will be used.\n" msgstr "" @@ -7029,7 +7030,7 @@ msgstr "'%1%' dosyası yazmak için açıldı.\n" msgid "The file '%1%' has unknown type. Please have a look at the supported file types ('mkvmerge --list-types') and contact the author Moritz Bunkus if your file type is supported but not recognized properly.\n" msgstr "Dosya '%1%' bilinmeyen bir tür. Lütfen desteklenen dosya türlerine ('mkvmerge --list-types') bakın ve eğer dosya türünüz destekleniyor ama düzgün olarak tanınmıyorsa, yazar Moritz Bunkus ile temasa geçin.\n" -#: src/merge/pr_generic.cpp:1696 +#: src/merge/pr_generic.cpp:1669 #, boost-format msgid "The file '%1%' is a non-supported file type (%2%).\n" msgstr "'%1%' dosyası desteklenmeyen bir dosya türü (%2%).\n" @@ -7092,9 +7093,8 @@ msgstr "Dosya desteklenmeyen kalıp biçimidir (%s)." #: src/mmg/wx_kax_analyzer.cpp:36 #: src/propedit/propedit.cpp:94 -#, fuzzy msgid "The file is being analyzed." -msgstr "Dosya analiz ediliyor.\n" +msgstr "Dosya çözümleniyor." #: src/merge/output_control.cpp:282 msgid "The file is being fixed, part 1/4..." @@ -7156,7 +7156,7 @@ msgstr "" #: src/common/kax_file.cpp:48 #, boost-format msgid "The first cluster timecode after the resync is %1%.\n" -msgstr "" +msgstr "Yeniden eşitlemeden sonraki ilk küme zaman kodu %1%.\n" #: src/merge/mkvmerge.cpp:1755 msgid "The first file cannot be appended because there are no files to append to.\n" @@ -7204,7 +7204,7 @@ msgstr "" msgid "The given timecode scale factor is outside the valid range (1...10000000 or -1 for 'sample precision even if a video track is present').\n" msgstr "" -#: src/merge/pr_generic.h:462 +#: src/merge/connection_checks.h:39 msgid "The height of the two tracks is different: %1% and %2%" msgstr "İki izin yükseklikleri farklı: %1% ve %2%" @@ -7343,11 +7343,11 @@ msgstr "" msgid "The next UID was already given in '%1% %2%'.\n" msgstr "Sonraki UID, '%1% %2%' içinde zaten verildi.\n" -#: src/merge/pr_generic.h:452 +#: src/merge/connection_checks.h:29 msgid "The number of bits per sample of the two audio tracks is different: %1% and %2%" msgstr "İki ses izinin örnek başına bit sayıları farklı: %1% ve %2%" -#: src/merge/pr_generic.h:447 +#: src/merge/connection_checks.h:24 msgid "The number of channels of the two audio tracks is different: %1% and %2%" msgstr "İki ses izinin kanal sayıları farklı: %1% ve %2%" @@ -7465,7 +7465,7 @@ msgstr "Sebep bilinmiyor." msgid "The root element must be <%1%>." msgstr "Kök unsur <%1%> olmak zorunda." -#: src/merge/pr_generic.h:442 +#: src/merge/connection_checks.h:19 msgid "The sample rate of the two audio tracks is different: %1% and %2%" msgstr "İki ses izinin örnekleme oranı farklı: %1% ve %2%" @@ -7542,7 +7542,7 @@ msgstr "İzin verilen aralığı dışında %2% konumundaki etiket ya da öznite msgid "The tag or attribute '%1%' at position %2% contains invalid or mal-formed data." msgstr "%2% konumundaki etiket ya da öznitelik '%1%' geçersiz ya da bozuk biçimlenmiş veri içeriyor." -#: src/merge/pr_generic.cpp:277 +#: src/merge/pr_generic.cpp:274 #, boost-format msgid "The tags in '%1%' could not be parsed: some mandatory elements are missing.\n" msgstr "'%1%' içindeki etiketler ayrıştırılamadı: bazı zorunlu öğeler eksik.\n" @@ -7606,7 +7606,7 @@ msgstr "Yeni bir çıktı dosyası başladıktan sonraki zaman kodları. Zaman k msgid "The timecodes can be given either in the form HH:MM:SS.nnnnnnnnn or as the number of seconds followed by 's'." msgstr "" -#: src/input/r_ogm.cpp:613 +#: src/input/r_ogm.cpp:612 msgid "The timecodes for this stream have been reset in the middle of the file. This is not supported. The current packet will be discarded.\n" msgstr "" @@ -7654,7 +7654,7 @@ msgstr "İz parametreleri uyuşmuyor." msgid "The update information could not be retrieved from %1%.\n" msgstr "%1% adresinden güncelleme bilgisi alınamadı.\n" -#: src/merge/pr_generic.h:457 +#: src/merge/connection_checks.h:34 msgid "The width of the two tracks is different: %1% and %2%" msgstr "İki izin genişlikleri farklı: %1% ve %2%" @@ -7698,8 +7698,8 @@ msgstr "Uyarılar vardı" msgid "There were warnings, or the process was terminated." msgstr "Uyarılar vardı ya da işlem sonlandırıldı." -#: src/input/r_avi.cpp:563 -#: src/input/r_real.cpp:294 +#: src/input/r_avi.cpp:555 +#: src/input/r_real.cpp:289 msgid "This AAC track does not contain valid headers. Could not parse the AAC information.\n" msgstr "Bu AAC izi geçerli başlıkları içermiyor. AAC bilgisi ayrıştırılamadı.\n" @@ -7713,12 +7713,12 @@ msgstr "" msgid "This AC3 track contains %1% bytes of non-AC3 data which were skipped. The audio/video synchronization may have been lost.\n" msgstr "" -#: src/output/p_avc.cpp:97 +#: src/output/p_avc.cpp:98 #, boost-format msgid "This AVC/h.264 contains frames that are too big for the current maximum NALU size. You have to re-run mkvmerge and set the maximum NALU size to %1% for this track (command line parameter '--nalu-size-length %2%:%1%').\n" msgstr "" -#: src/output/p_avc.cpp:115 +#: src/output/p_avc.cpp:116 #, boost-format msgid "This AVC/h.264 track does not start with a key frame. The first %1% frames have been skipped.\n" msgstr "" @@ -7727,17 +7727,17 @@ msgstr "" msgid "This AVC/h.264 track's timing information indicates that it uses a variable frame rate. However, no default duration nor an external timecode file has been provided for it, nor does the source container provide timecodes. The resulting timecodes may not be useful.\n" msgstr "" -#: src/output/p_mp3.cpp:58 +#: src/output/p_mp3.cpp:59 #, boost-format msgid "This MPEG audio track contains %1% bytes of non-MP3 data at the beginning. This corresponds to a delay of %2%ms. This delay will be used instead of the garbage data.\n" msgstr "" -#: src/output/p_mp3.cpp:67 +#: src/output/p_mp3.cpp:68 #, boost-format msgid "This MPEG audio track contains %1% bytes of non-MP3 data which were skipped. The audio/video synchronization may have been lost.\n" msgstr "" -#: src/input/r_ogm.cpp:857 +#: src/input/r_ogm.cpp:856 msgid "This Ogg/OGM file contains chapter or title information. Unfortunately the charset used to store this information in the file cannot be identified unambiguously. The program assumes that your system's current charset is appropriate. This can be overridden with the '--chapter-charset ' switch.\n" msgstr "" @@ -7830,7 +7830,7 @@ msgstr "" #: src/common/common.h:101 msgid "This should not have happened. Please contact the author Moritz Bunkus with this error/warning message, a description of what you were trying to do, the command line used and which operating system you are using. Thank you." -msgstr "" +msgstr "Bu olmamalıydı. Lütfen hangi işletim sistemini kullandığınız, kullandığınız komut satırı, ne yapmaya çalıştığınızın açıklaması ve bu hata/uyarı mesajıyla birlikte yazar Moritz Bunkus ile temasa geçin. Teşekkür ederiz." #: src/mmg/tabs/input_format.cpp:257 msgid "This track contains SBR AAC/HE-AAC/AAC+ data. Only needed for AAC input files, because SBR AAC cannot be detected automatically for these files. Not needed for AAC tracks read from MP4 or Matroska files." @@ -7940,7 +7940,7 @@ msgstr "KodekID '%2%' ile iz %1%, \"default duration\" öğesi eksik ve çıkart msgid "Track %1%: %2%, codec ID: %3%%4%%5%%6%\n" msgstr "İz %1%: %2%, kodek ID: %3%%4%%5%%6%\n" -#: src/input/r_qtmp4.cpp:2227 +#: src/input/r_qtmp4.cpp:2209 #, boost-format msgid "Track %1%: AAC found, but decoder config data has length %2%.\n" msgstr "İz %1%: AAC bulundu, ancak çözücü yapılandırma verisi %2% uzunluğuna sahip.\n" @@ -7960,7 +7960,7 @@ msgstr "İz %1%: NAL çok büyük. Başlık alanına göre boyut: %2%, paket ola msgid "Track %1%: Subtitle entry number %2% is missing its duration. Assuming a duration of 1s.\n" msgstr "İz %1%: Altyazı giriş sayısı %2% eksik süreli. Süre 1s farzediliyor.\n" -#: src/input/r_qtmp4.cpp:2230 +#: src/input/r_qtmp4.cpp:2212 #, boost-format msgid "Track %1%: The AAC information could not be parsed.\n" msgstr "İz %1%: AAC bilgisi ayrıştırılamadı.\n" @@ -7971,7 +7971,7 @@ msgstr "İz %1%: AAC bilgisi ayrıştırılamadı.\n" msgid "Track ID %1% has an unknown AAC type.\n" msgstr "İz ID %1% bilinmeyen bir AAC türüne sahip.\n" -#: src/merge/pr_generic.cpp:1439 +#: src/merge/pr_generic.cpp:1430 #, boost-format msgid "Track ID %1%: %2% (%3%)" msgstr "İz ID %1%: %2% (%3%)" @@ -8105,17 +8105,17 @@ msgstr "Tek alan karesinden sonra beklenmedik resim karesi. Çoklamak için dene msgid "Unknown" msgstr "Bilinmiyor" -#: src/output/p_aac.cpp:127 +#: src/output/p_aac.cpp:128 #, boost-format msgid "Unknown AAC MPEG-2 profile %1%." msgstr "Bilinmeyen AAC MPEG-2 profili %1%." -#: src/output/p_aac.cpp:115 +#: src/output/p_aac.cpp:116 #, boost-format msgid "Unknown AAC MPEG-4 object type %1%." msgstr "Bilinmeyen AAC MPEG-4 nesne türü %1%." -#: src/input/r_ogm.cpp:563 +#: src/input/r_ogm.cpp:562 #, boost-format msgid "Unknown audio stream type 0x%|1$04x|. Stream ID %2% will be ignored.\n" msgstr "Bilinmeyen ses akış türü 0x%|1$04x|. Akış ID %2% yoksayılacak.\n" @@ -8145,7 +8145,7 @@ msgstr "'%1% %2%' içinde önceki UID için bilinmeyen biçim.\n" msgid "Unknown format for the segment UID '%3%' in '%1% %2%'.\n" msgstr "'%1% %2%' içinde parça UID '%3%' için bilinmeyen biçim.\n" -#: src/input/r_vobsub.cpp:608 +#: src/input/r_vobsub.cpp:609 #, boost-format msgid "Unknown header 0x%|1$02x|%|2$02x|%|3$02x|%|4$02x|\n" msgstr "Bilinmeyen başlık 0x%|1$02x|%|2$02x|%|3$02x|%|4$02x|\n" @@ -8165,7 +8165,7 @@ msgstr "Bilinmeyen seçenek '%1%'.\n" msgid "Unknown parse mode in '%1% %2%'.\n" msgstr "'%1% %2%' içinde bilinmeyen ayrıştırma kipi.\n" -#: src/input/r_avi.cpp:517 +#: src/input/r_avi.cpp:510 #, boost-format msgid "Unknown/unsupported audio format 0x%|1$04x| for this audio track.\n" msgstr "Bu ses izi için bilinmeyen/desteklenmeyen ses biçimi 0x%|1$04x|.\n" @@ -8179,7 +8179,7 @@ msgstr "Tanınmayan komut satırı seçeneği '%1%'.\n" msgid "Unsigned integer" msgstr "" -#: src/input/r_vobsub.cpp:477 +#: src/input/r_vobsub.cpp:478 #, boost-format msgid "Unsupported MPEG mpeg_version: 0x%|1$02x| in packet %2% for timecode %3%, assuming MPEG2. No further warnings will be printed for this track.\n" msgstr "" @@ -8188,7 +8188,7 @@ msgstr "" msgid "Unsupported format" msgstr "Desteklenmeyen biçim" -#: src/input/r_matroska.cpp:1685 +#: src/input/r_matroska.cpp:1674 msgid "Unsupported track type for this track.\n" msgstr "Bu iz için desteklenmeyen biçim.\n" @@ -8230,7 +8230,7 @@ msgstr "Kullanıcı tanımlı seçenekler:" msgid "Using a NALU size length of 3 bytes might result in tracks that won't be decodable with certain AVC/h.264 codecs.\n" msgstr "" -#: src/merge/pr_generic.h:339 +#: src/merge/pr_generic.h:334 msgid "Using the demultiplexer for the format '%1%'.\n" msgstr "'%1%' biçimi için demultiplexer kullanılıyor.\n" @@ -8239,7 +8239,7 @@ msgstr "'%1%' biçimi için demultiplexer kullanılıyor.\n" msgid "Using the generic output module for track type '%1%'.\n" msgstr "'%1%' iz türü için genel çıktı modülü kullanılıyor.\n" -#: src/merge/pr_generic.h:341 +#: src/merge/pr_generic.h:336 msgid "Using the output module for the format '%1%'.\n" msgstr "'%1%' biçimi için çıktı modülü kullanılıyor.\n" @@ -8316,7 +8316,7 @@ msgstr "Görüntü görüntüleme genişliği" msgid "Video interlaced flag" msgstr "" -#: src/input/r_real.cpp:613 +#: src/input/r_real.cpp:610 #, boost-format msgid "Video packet assembly failed. Error code: %1% (%2%)\n" msgstr "Görüntü paketi montajı başarısız oldu. Hata kodu: %1% (%2%)\n" @@ -8359,7 +8359,7 @@ msgid "VobButtons" msgstr "VobButtons" #: src/input/r_vobsub.h:75 -#: src/output/p_vobsub.h:34 +#: src/output/p_vobsub.h:31 msgid "VobSub" msgstr "VobSub" @@ -8822,7 +8822,7 @@ msgstr "dil: %1%" msgid "length %1%, data: %2%" msgstr "uzunluk %1%, veri: %2%" -#: src/input/r_vobsub.cpp:229 +#: src/input/r_vobsub.cpp:230 #, boost-format msgid "line %1%: The 'delay' timestamp could not be parsed.\n" msgstr "satır %1%: 'gecikme' zaman damgası ayrıştırılamadı.\n" @@ -8947,7 +8947,7 @@ msgid "matroska_reader: Track type was not found.\n" msgstr "matroska_okuyucusu: İz türü bulunmadı.\n" #: src/input/r_matroska.cpp:1219 -#: src/input/r_matroska.cpp:1877 +#: src/input/r_matroska.cpp:1866 msgid "matroska_reader: caught exception\n" msgstr "matroska_okuyucusu: istisna yakalandı\n" @@ -9111,7 +9111,7 @@ msgstr "mkvmerge harici metin dosyalarını okuyabilir ve zaman kodlarını kull msgid "mkvmerge does not distinguish between those two and simply counts the number of blocks." msgstr "mkvmerge bu ikisi ve blokların sayısını basit sayımları arasında ayırım yapmaz." -#: src/output/p_avc.cpp:104 +#: src/output/p_avc.cpp:105 #, boost-format msgid "" "mkvmerge encountered broken or unparsable data in this AVC/h.264 video track. Either your file is damaged (which mkvmerge cannot cope with yet) or this is a bug in mkvmerge itself. The error message was:\n" @@ -9134,7 +9134,7 @@ msgstr "mkvmerge dönen %d kodu ile bitirdi. %s" msgid "mkvmerge has finished" msgstr "mkvmerge bitti" -#: src/input/r_ogm.cpp:515 +#: src/input/r_ogm.cpp:514 msgid "mkvmerge has not been compiled with FLAC support but handling of this stream has been requested.\n" msgstr "mkvmerge FLAC desteğiyle derlenmedi ama bu akışı kullanabilmesi talep edildi.\n" @@ -9202,7 +9202,7 @@ msgstr "Eğer hiç giriş seçilmezse, mmg varsayılan listeye sıfırlayacaktı msgid "mono" msgstr "mono" -#: src/input/r_mpeg_ps.cpp:1153 +#: src/input/r_mpeg_ps.cpp:1156 #, boost-format msgid "mpeg_ps_reader: Should not have happened #1. %1%" msgstr "mpeg_ps_reader: Olmamalıydı #1. %1%" @@ -9258,7 +9258,7 @@ msgstr "yok" msgid "normal" msgstr "normal" -#: src/input/r_ogm.cpp:484 +#: src/input/r_ogm.cpp:483 #, boost-format msgid "ogg_stream_init for stream number %1% failed. Will try to continue and ignore this stream.\n" msgstr "Akış numarası %1% için ogg_stream_init başarısız oldu. Devam etmeyi deneyecek ve bu akışı yoksayacak.\n" @@ -9327,12 +9327,12 @@ msgstr "piksel yüksekliği: %1%" msgid "pixel width: %1%" msgstr "piksel genişliği: %1%" -#: src/merge/pr_generic.cpp:878 +#: src/merge/pr_generic.cpp:869 #, boost-format msgid "pr_generic.cpp/generic_packetizer_c::add_packet(): timecode < last_timecode (%1% < %2%). %3%\n" msgstr "pr_generic.cpp/generic_packetizer_c::add_packet(): zaman damgası < son_zaman_damgası (%1% < %2%). %3%\n" -#: src/merge/pr_generic.cpp:1230 +#: src/merge/pr_generic.cpp:1221 #, boost-format msgid "pr_generic.cpp/generic_reader_c::demuxing_requested(): Invalid track type %1%." msgstr "pr_generic.cpp/generic_reader_c::demuxing_requested(): Geçersiz iz türü %1%." @@ -9421,7 +9421,7 @@ msgstr "zaman kodlarına dayanarak kısımlara göre böl" #: src/input/subtitles.cpp:600 #, boost-format msgid "spu_extraction_duration: Encountered broken SPU packet (next_off < start_off) at timecode %1%. This packet might be displayed incorrectly or not at all.\n" -msgstr "" +msgstr "spu_extraction_duration: %1% zaman kodunda bozulmuş SPU paketiyle (next_off < start_off) karşılaşıldı. Bu paket doğru olarak görüntülenmiyor olabilir ya da birşey değil.\n" #: src/input/subtitles.cpp:353 msgid "ssa_reader: Invalid format. Could not find the \"Format\" line in the \"[Events]\" section." @@ -9441,7 +9441,7 @@ msgstr "altyazı" msgid "subtitles" msgstr "altyazı" -#: src/output/p_textsubs.h:37 +#: src/output/p_textsubs.h:36 msgid "text subtitles" msgstr "metin altyazıları" @@ -9480,7 +9480,7 @@ msgstr "und (Belirsiz)" #: src/info/mkvinfo.cpp:755 #: src/info/mkvinfo.cpp:933 #: src/input/r_matroska.cpp:95 -#: src/input/r_matroska.cpp:2234 +#: src/input/r_matroska.cpp:2223 #: src/input/r_mpeg_ps.cpp:1344 #: src/mmg/header_editor/value_page.cpp:150 #: src/mmg/mmg.cpp:64 @@ -9489,7 +9489,7 @@ msgstr "und (Belirsiz)" msgid "unknown" msgstr "bilinmiyor" -#: src/input/r_matroska.cpp:2227 +#: src/input/r_matroska.cpp:2216 #, boost-format msgid "unknown, format tag 0x%|1$04x|" msgstr "bilinmiyor, biçim etiketi: 0x%|1$04x|" @@ -9514,7 +9514,7 @@ msgstr "doğrulama başarısız: bölümler->CheckMandatory() yanlış. Bu olmam msgid "video" msgstr "görüntü" -#: src/input/r_vobsub.cpp:574 +#: src/input/r_vobsub.cpp:575 msgid "vobsub_reader: sub file read failure" msgstr "vobsub_reader: sub dosyası okuma başarısız" diff --git a/po/zh_TW.po b/po/zh_TW.po index a2211d3f4..8a687ed63 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -6,9 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: zh-TW\n" -"Report-Msgid-Bugs-To: Dean Lee \n" -"POT-Creation-Date: 2009-02-18 23:52+0100\n" -"PO-Revision-Date: 2013-02-26 02:52+0800\n" +"Report-Msgid-Bugs-To:POT-Creation-Date: 2009-02-18 23:52+0100\n" +"PO-Revision-Date: 2013-04-21 19:56+0200\n" "Last-Translator: Dongjun Wu \n" "Language-Team: Chinese Traditional \n" "Language: zh_TW\n" @@ -270,15 +269,14 @@ msgid " --engage Turns on experimental feature 'feature'.\n" msgstr " --engage 開啟實驗性功能「feature」\n" #: src/merge/mkvmerge.cpp:222 -#, fuzzy msgid "" " --fix-bitstream-timing-information \n" " Adjust the frame/field rate stored in the video\n" " bitstream to match the track's default duration.\n" msgstr "" -" --forced-track \n" -" 為此軌設定“強制軌”標記,\n" -" 如果此布林值為 0 則強制不呈現。\n" +" --fix-bitstream-timing-information \n" +" 調整儲存於影片位元串流中的影格/圖場率讓其\n" +" 符合此軌道的預設時間長度。\n" #: src/merge/mkvmerge.cpp:205 msgid "" @@ -292,7 +290,7 @@ msgstr "" #: src/merge/mkvmerge.cpp:82 msgid " --global-tags Read global tags from a XML file.\n" -msgstr " --global-tags 從指定的 XML 檔案讀取整體標籤。\n" +msgstr " --global-tags 從指定的 XML 檔案讀取總體標籤。\n" #: src/merge/mkvmerge.cpp:214 msgid "" @@ -1497,9 +1495,8 @@ msgid "'--engage' lacks its argument.\n" msgstr "「--engage」缺少參數。\n" #: src/merge/mkvmerge.cpp:2332 -#, fuzzy msgid "'--fix-bitstream-timing-information' lacks its argument.\n" -msgstr "「--default-duration」缺少參數。\n" +msgstr "「--fix-bitstream-timing-information」缺少參數。\n" #: src/merge/mkvmerge.cpp:2224 msgid "'--forced-track' lacks its argument.\n" @@ -1651,12 +1648,12 @@ msgstr "+-> 預先解析 FLAC 檔案: %1%%%%2%" msgid "+-> Pre-parsing FLAC file: 100%\n" msgstr "+-> 預先解析 FLAC 檔案: 100%\n" -#: src/merge/pr_generic.cpp:1441 +#: src/merge/pr_generic.cpp:1432 #, boost-format msgid ", description '%1%'" msgstr ", 描述 「%1%」" -#: src/merge/pr_generic.cpp:1442 +#: src/merge/pr_generic.cpp:1433 #, boost-format msgid ", file name '%1%'" msgstr ", 檔名「%1%」" @@ -1763,13 +1760,13 @@ msgstr " 必須含有 子元件。" msgid " is missing the child." msgstr " 缺少 子元件。" -#: src/input/r_matroska.cpp:1997 +#: src/input/r_matroska.cpp:1986 #, boost-format msgid "A block group was found at position %1%, but no block element was found inside it. This might make mkvmerge crash.\n" msgstr "在 %1% 找到了一個區塊群組,但裡面沒有區塊元件。這可能會導致 mkvmerge 不正常關閉。\n" -#: src/input/r_matroska.cpp:1897 -#: src/input/r_matroska.cpp:2007 +#: src/input/r_matroska.cpp:1886 +#: src/input/r_matroska.cpp:1996 #, boost-format msgid "A block was found at timestamp %1% for track number %2%. However, no headers where found for that track number. The block will be skipped.\n" msgstr "在時間戳記 %1% 處找到了軌道編號為 %2% 的區塊。然而,沒有找到符合該軌道編號的表頭資訊。此區塊將被跳過。\n" @@ -1825,7 +1822,7 @@ msgstr "單一 Matroska 區塊可包含完整影格 (漸進式內容) 或單一 msgid "A track" msgstr "一個軌道" -#: src/merge/pr_generic.cpp:1311 +#: src/merge/pr_generic.cpp:1302 #, boost-format msgid "A track with the ID %1% was requested but not found in the file. The corresponding option will be ignored.\n" msgstr "ID 為 %1% 的軌道被要求但在檔案中沒有找到。相應的選項將被忽略。\n" @@ -1906,11 +1903,15 @@ msgstr "" "變母音符號¨這樣的特殊字元)" #: src/input/r_avc.h:32 -#: src/output/p_avc.h:42 #: src/output/p_mpeg4_p10.h:34 msgid "AVC/h.264" msgstr "AVC/h.264" +#: src/output/p_avc.h:42 +#, fuzzy +msgid "AVC/h.264 (unframed)" +msgstr "AVC/h.264" + #: src/common/file_types.cpp:27 msgid "AVC/h.264 elementary streams" msgstr "AVC/h.264 基本流" @@ -2151,7 +2152,7 @@ msgstr "分析執行中" msgid "Analyze MPEG4 bitstreams, put each frame into one Matroska block, use proper timestamping (I P B B = 0 120 40 80), use V_MPEG4/ISO/... CodecIDs." msgstr "分析 MPEG4 位流,將每一畫格置於單獨的 Matroska 塊中,使用固有的時間戳記 (I P B B = 0 120 40 80),使用形如 V_MPEG4/ISO/... 的 CodecID。" -#: src/merge/pr_generic.cpp:528 +#: src/merge/pr_generic.cpp:519 #, boost-format msgid "Another default track for %1% tracks has already been set. The 'default' flag for track %2% of '%3%' will not be set.\n" msgstr "軌道 %1% 的另一個預設軌已設定。「%3%」的 %2% 軌道的「預設軌」標記將不被設定。\n" @@ -2203,7 +2204,7 @@ msgstr "附加的" msgid "Attached files" msgstr "附加檔案清單" -#: src/merge/pr_generic.cpp:1440 +#: src/merge/pr_generic.cpp:1431 #, boost-format msgid "Attachment ID %1%: type '%2%', size %3% bytes" msgstr "附件 ID %1%: 類型「%2%」, 大小 %3% 位元組" @@ -2322,7 +2323,7 @@ msgstr "區塊群組" msgid "Block virtual: %1%" msgstr "虛擬區塊: %1%" -#: src/input/r_vobsub.cpp:547 +#: src/input/r_vobsub.cpp:548 #, boost-format msgid "Bogus aid %1%\n" msgstr "無效 aid %1%\n" @@ -2331,11 +2332,11 @@ msgstr "無效 aid %1%\n" msgid "Boolean (yes/no, on/off etc)" msgstr "布林值 (是/非, 開/關 等)" -#: src/merge/pr_generic.cpp:196 +#: src/merge/pr_generic.cpp:194 msgid "Both the aspect ratio and '--display-dimensions' were given.\n" msgstr "同時給定了外觀比例與「--display-dimensions」。\n" -#: src/merge/pr_generic.cpp:194 +#: src/merge/pr_generic.cpp:192 msgid "Both the aspect ratio factor and '--display-dimensions' were given.\n" msgstr "同時給定了外觀比例係數與「--display-dimensions」。\n" @@ -2366,7 +2367,7 @@ msgstr "計算並顯示檢查碼且使用贅言等級 4。" msgid "Calculate and display checksums of frame contents." msgstr "僅顯示內容的摘要,而非所有元件。" -#: src/output/p_mpeg4_p2.cpp:117 +#: src/output/p_mpeg4_p2.cpp:114 msgid "Cannot convert non-native MPEG4 video frames into native ones if the source container provides neither timecodes nor a number of frames per second.\n" msgstr "在來源容器不提供時間碼或畫格率值的情況下,無法將非原生 MPEG4 視訊畫格轉換為原生畫格。\n" @@ -2498,9 +2499,9 @@ msgid "Chapter files (*.xml;*.txt;*.cue)|*.xml;*.txt;*.cue|%s" msgstr "章節檔案 (*.xml;*.txt;*.cue)|*.xml;*.txt;*.cue|%s" #: src/mmg/tabs/chapters.cpp:561 -#, fuzzy, c-format, boost-format +#, c-format, boost-format msgid "Chapter files (*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue)|*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue|%s" -msgstr "章節檔案 (*.xml;*.txt;*.mka;*.mkv;*.mk3d;*.cue)|*.xml;*.txt;*.mka;*.mkv;*.mk3d;*.cue|%s" +msgstr "章節檔案 (*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue)|*.xml;*.txt;*.mka;*.mkv;*.mks;*.mk3d;*.cue|%s" #: src/mmg/tabs/chapters.cpp:366 msgid "Chapter names and languages" @@ -2561,7 +2562,7 @@ msgstr "章節已寫入。" msgid "Chapters:" msgstr "章節:" -#: src/merge/pr_generic.cpp:1443 +#: src/merge/pr_generic.cpp:1434 #, boost-format msgid "Chapters: %1% entries" msgstr "章節: %1% 項目" @@ -2784,7 +2785,7 @@ msgstr "使用命令列:" msgid "Common languages" msgstr "共通語言" -#: src/merge/pr_generic.cpp:804 +#: src/merge/pr_generic.cpp:795 #, boost-format msgid "Compression failed: %1%\n" msgstr "壓縮失敗: %1%\n" @@ -2850,16 +2851,16 @@ msgstr "無法建立檔案「%s」。" msgid "Could not create the specified file." msgstr "無法建立指定的檔案。" -#: src/input/r_avi.cpp:354 +#: src/input/r_avi.cpp:349 msgid "Could not extract the decoder specific config data (AVCC) from this AVC/h.264 track.\n" msgstr "無法從該 AVC/h.264 軌道提取解碼器特有設定資料 (AVCC)。\n" -#: src/input/r_avi.cpp:300 -#: src/input/r_avi.cpp:305 +#: src/input/r_avi.cpp:298 +#: src/input/r_avi.cpp:303 msgid "Could not extract the sequence header from this MPEG-1/2 track.\n" msgstr "無法從該 MPEG-1/2 軌道提取序列表頭。\n" -#: src/input/r_avi.cpp:454 +#: src/input/r_avi.cpp:449 #, boost-format msgid "Could not find an index for audio track %1% (avilib error message: %2%). Skipping track.\n" msgstr "找不到音軌 %1% 的索引 (avilib 錯誤訊息: %2%)。正在跳過此軌。\n" @@ -2869,7 +2870,7 @@ msgstr "找不到音軌 %1% 的索引 (avilib 錯誤訊息: %2%)。正在跳過 msgid "Could not find gptzr when appending. %1%\n" msgstr "添加時找不到 gptzr。 %1%\n" -#: src/output/p_mpeg4_p2.cpp:181 +#: src/output/p_mpeg4_p2.cpp:178 msgid "Could not find the codec configuration data in the first MPEG-4 part 2 video frame. This track cannot be stored in native mode.\n" msgstr "在第一個 MPEG-4 part 2 視訊畫格中找不到編解碼器設定資料。該軌不能以原生模式儲存。\n" @@ -2877,7 +2878,7 @@ msgstr "在第一個 MPEG-4 part 2 視訊畫格中找不到編解碼器設定資 msgid "Could not find the next Ogg page. This indicates a damaged Ogg/Ogm file. Will try to continue.\n" msgstr "找不到 Ogg 的下一頁。這表示 Ogg/Ogm 檔案可能已損壞。將試著繼續。\n" -#: src/input/r_avi.cpp:620 +#: src/input/r_avi.cpp:607 #: src/input/r_matroska.cpp:1464 msgid "Could not find valid DTS headers in this track's first frames.\n" msgstr "在這軌道的第一個畫格裡找不到正確的 DTS 表頭。\n" @@ -3104,7 +3105,7 @@ msgstr "刪除(&E)" msgid "DTS" msgstr "DTS" -#: src/output/p_dts.cpp:70 +#: src/output/p_dts.cpp:69 msgid "DTS header information changed! - New format:\n" msgstr "DTS 表頭資訊已變更! - 新格式:\n" @@ -3525,7 +3526,7 @@ msgstr "" "錯誤: 未給定輸出檔名。\n" "\n" -#: src/output/p_vorbis.cpp:62 +#: src/output/p_vorbis.cpp:63 msgid "Error: vorbis_packetizer: Could not extract the stream's parameters from the first packets.\n" msgstr "發生錯誤: vorbis_packetizer: 無法從第一個套件中提取媒體流參數。\n" @@ -3577,17 +3578,17 @@ msgid "Extract the data to a raw file." msgstr "提取資料到 raw 檔案。" #: src/output/p_avc.cpp:147 -#: src/output/p_mpeg4_p10.cpp:74 +#: src/output/p_mpeg4_p10.cpp:77 #, boost-format msgid "Extracted the aspect ratio information from the MPEG-4 layer 10 (AVC) video data and set the display dimensions to %1%/%2%.\n" msgstr "從 MPEG-4 layer 10 (AVC) 視訊資料中提取外觀比例資訊並設定顯示尺寸為 %1%/%2%。\n" -#: src/output/p_mpeg4_p2.cpp:337 +#: src/output/p_mpeg4_p2.cpp:331 #, boost-format msgid "Extracted the aspect ratio information from the MPEG4 layer 2 video data and set the display dimensions to %1%/%2%.\n" msgstr "從 MPEG4 layer 2 視訊資料中提取外觀比例資訊並設定顯示尺寸為 %1%/%2%。\n" -#: src/output/p_theora.cpp:74 +#: src/output/p_theora.cpp:73 #, boost-format msgid "Extracted the aspect ratio information from the Theora video headers and set the display dimensions to %1%/%2%.\n" msgstr "從 Theora 視訊頭中提取外觀比例資訊並設定顯示尺寸為 %1%/%2%。\n" @@ -3655,12 +3656,12 @@ msgstr "家族 UID: %1%" msgid "File %1% has unknown type. Please have a look at the supported file types ('mkvmerge --list-types') and contact the author Moritz Bunkus if your file type is supported but not recognized properly.\n" msgstr "檔案 %1% 類型未知。請查看受支援的檔案類型清單 (「mkvmerge --list-types」),如果您的檔案類型受支援但沒被正常識別,請聯繫作者 Moritz Bunkus 。\n" -#: src/merge/pr_generic.cpp:1438 +#: src/merge/pr_generic.cpp:1429 #, boost-format msgid "File '%1%': container: %2%" msgstr "檔案「%1%」: 容器: %2%" -#: src/merge/pr_generic.cpp:1692 +#: src/merge/pr_generic.cpp:1665 #, boost-format msgid "File '%1%': unsupported container: %2%\n" msgstr "檔案「%1%」: 不支援的容器: %2%\n" @@ -3670,8 +3671,8 @@ msgstr "檔案「%1%」: 不支援的容器: %2%\n" msgid "File UID: %1%" msgstr "檔案 UID: %1%" -#: src/input/r_real.cpp:432 -#: src/input/r_real.cpp:441 +#: src/input/r_real.cpp:429 +#: src/input/r_real.cpp:438 #, boost-format msgid "File contains fewer frames than expected or is corrupt after frame %1%.\n" msgstr "檔案包含的畫格數比預期的少,或者檔在 %1% 畫格後被破壞。\n" @@ -3767,9 +3768,8 @@ msgid "Finished processing on %s" msgstr "已完成對 %s 的處理" #: src/mmg/tabs/input_format.cpp:260 -#, fuzzy msgid "Fix bitstream timing information" -msgstr "儲存資訊發生錯誤" +msgstr "修復位元串流時間資訊" #: src/mmg/tabs/chapters.cpp:354 msgid "Flags:" @@ -3882,7 +3882,7 @@ msgstr "軌道一般選項" #: src/mmg/mmg_dialog.cpp:327 msgid "Global" -msgstr "整體" +msgstr "總體" #: src/extract/extract_cli_parser.cpp:59 #: src/mmg/tabs/global.cpp:302 @@ -3894,7 +3894,7 @@ msgstr " 整體選項" msgid "Global tags (%d entries) from %s" msgstr "整體標籤 (%d 個項目) 自 %s" -#: src/merge/pr_generic.cpp:1444 +#: src/merge/pr_generic.cpp:1435 #, boost-format msgid "Global tags: %1% entries" msgstr "整體標籤: %1% 項目" @@ -4079,7 +4079,7 @@ msgstr "如果啟用了檔分割,一個檔可以附加至建立的所有檔, msgid "If you encounter problems during playback of files please consider visiting the newly created MKVToolNix troubleshooting advice page:" msgstr "若你在播放檔案時遇到問題,請考慮訪問新建立的 MKVToolNix 障礙排除建議網頁:" -#: src/output/p_textsubs.cpp:69 +#: src/output/p_textsubs.cpp:64 #, boost-format msgid "Ignoring an entry which starts after it ends (%1%).\n" msgstr "忽略起始時間在結束時間之後的項目。(%1%)\n" @@ -4102,7 +4102,7 @@ msgstr "不相容的 mkvmerge 版本" msgid "Incompatible track" msgstr "不相容的軌道" -#: src/input/r_real.cpp:570 +#: src/input/r_real.cpp:567 #, boost-format msgid "Inconsistent AAC audio packet (length: %1% != len_check %2%)\n" msgstr "不相容的 AAC 音訊套件 (長度: %1% != len_check %2%)\n" @@ -4187,9 +4187,9 @@ msgstr "無效 UID。該版本 UID 已被使用。原 UID 沒有被改變。" msgid "Invalid UTF-8 char. First byte: 0x%|1$02x|" msgstr "無效 UTF-8 字元。第一位元組: 0x%|1$02x|" -#: src/input/r_avi.cpp:629 -#: src/input/r_avi.cpp:634 -#: src/input/r_avi.cpp:651 +#: src/input/r_avi.cpp:616 +#: src/input/r_avi.cpp:621 +#: src/input/r_avi.cpp:638 msgid "Invalid Vorbis headers in AVI audio track." msgstr "有無效的 Vorbis 表頭,在 AVI 音軌中。" @@ -4208,9 +4208,9 @@ msgid "Invalid boolean option specified in '--default-track %1%'.\n" msgstr "無效的布林值選項指定,在「--default-track %1%」中。\n" #: src/merge/mkvmerge.cpp:1415 -#, fuzzy, boost-format +#, boost-format msgid "Invalid boolean option specified in '--fix-bitstream-timing-information %1%'.\n" -msgstr "無效的布林值選項指定,在「--forced-track %1%」中。\n" +msgstr "在「--fix-bitstream-timing-information %1%」中指定無效的布林值選項。\n" #: src/merge/mkvmerge.cpp:1067 #, boost-format @@ -4365,7 +4365,7 @@ msgstr "格式無效: 發現未知字元「%1%」" msgid "Invalid frame for '--split' in '--split %1%'.\n" msgstr "在「--split %1%」中「--split」的影格無效。\n" -#: src/input/r_vobsub.cpp:530 +#: src/input/r_vobsub.cpp:531 #, boost-format msgid "Invalid header length: %1% (total length: %2%, idx: %3%, dataidx: %4%)\n" msgstr "表頭長度無效: %1% (總長: %2%, 索引: %3%, 資料索引: %4%)\n" @@ -4428,7 +4428,7 @@ msgstr "在「--split %1%」(目前部分: %2%) 中「--split' in」指定的起 msgid "Invalid start frame/field number for '--split' in '--split %1%' (current part: %2%). The start number must be bigger than or equal to the previous part's end number.\n" msgstr "在「--split %1%」(目前部分: %2%) 中「--split' in」的結束影格/圖場號碼無效。起始數字必須大於或等於上一個部分的結束數字。\n" -#: src/input/r_usf.cpp:207 +#: src/input/r_usf.cpp:208 msgid "Invalid start or stop timecode" msgstr "無效的開始或終止時間碼" @@ -4534,9 +4534,9 @@ msgid "Invalid track ID specified in '--default-track %1%'.\n" msgstr "無效的軌道 ID 指定,在「--default-track %1%」。\n" #: src/merge/mkvmerge.cpp:1409 -#, fuzzy, boost-format +#, boost-format msgid "Invalid track ID specified in '--fix-bitstream-timing-information %1%'.\n" -msgstr "無效的軌道 ID 指定,在「--forced-track %1%」。\n" +msgstr "在「--fix-bitstream-timing-information %1%」中指定無效的軌道 ID。\n" #: src/merge/mkvmerge.cpp:1061 #, boost-format @@ -4573,11 +4573,11 @@ msgstr "任務輸出資訊" msgid "Job queue management" msgstr "任務佇列管理" -#: src/output/p_kate.h:40 +#: src/output/p_kate.h:39 msgid "Kate" msgstr "Kate" -#: src/output/p_kate.cpp:77 +#: src/output/p_kate.cpp:69 msgid "Kate packet is too small and is being skipped.\n" msgstr "Kate 套件過小,跳過。\n" @@ -4654,18 +4654,18 @@ msgstr "無法解析時間碼檔案「%2%」中的第 %1% 行。\n" msgid "Line %1%: Negative timestamp encountered. The entry will be adjusted to start from 00:00:00.000.\n" msgstr "第 %1% 行: 遇到負的時間戳。此項目會調整為從 00:00:00.000 開始。\n" -#: src/input/r_vobsub.cpp:292 +#: src/input/r_vobsub.cpp:293 #, boost-format msgid "Line %1%: The current timestamp (%2%) is smaller than the previous one (%3%). The entries will be sorted according to their timestamps. This might result in the wrong order for some subtitle entries. If this is the case then you have to fix the .idx file manually.\n" msgstr "第 %1% 行: 目前時間戳記 (%2%) 比前一個早 (%3%)。各條將按時間戳記重新排序。這可能導致某些字幕項目順序發生錯誤。如果是這樣,您需要手動修正 .idx 檔案。\n" -#: src/input/r_vobsub.cpp:242 -#: src/input/r_vobsub.cpp:265 +#: src/input/r_vobsub.cpp:243 +#: src/input/r_vobsub.cpp:266 #, boost-format msgid "Line %1%: The line seems to be a subtitle entry but the format couldn't be recognized. This entry will be skipped.\n" msgstr "第 %1% 行: 這一行似乎是字幕項目但格式無法識別。此條將被跳過。\n" -#: src/input/r_vobsub.cpp:282 +#: src/input/r_vobsub.cpp:283 #, boost-format msgid "Line %1%: The line seems to be a subtitle entry but the timecode was negative even after adding the track delay. Negative timecodes are not supported in Matroska. This entry will be skipped.\n" msgstr "第 %1% 行: 這一行似乎是字幕項目但時間碼為負即使添加了軌道延遲。負的時間碼不受 Matroska 的支援。此條將被跳過。\n" @@ -4907,7 +4907,7 @@ msgstr "缺少檔名" msgid "Missing file name after for the option '--edit-headers'." msgstr "選項「--edit-headers」後缺少檔名。" -#: src/input/r_ogm.cpp:949 +#: src/input/r_ogm.cpp:948 msgid "Missing header/comment packets for stream. This file is broken but should be muxed correctly. If not please contact the author Moritz Bunkus .\n" msgstr "缺少串流的表頭/註釋封包。檔案已損壞但應該能正常合成。如果確定檔案沒有損壞,請聯繫作者 Moritz Bunkus 。\n" @@ -5054,7 +5054,7 @@ msgstr "下一個剪輯的唯一 ID" msgid "No %1% specified in '--%2% %3%'.\n" msgstr "未指定 %1%,在「--%2% %3%」。\n" -#: src/input/r_qtmp4.cpp:1209 +#: src/input/r_qtmp4.cpp:1208 msgid "No AC3 header found in first frame; track will be skipped.\n" msgstr "第一個畫格未發現 AC3 表頭; 此軌將被跳過。\n" @@ -5193,7 +5193,7 @@ msgstr "表頭欄位未被修改。未儲存任何改動。" #: src/mmg/tabs/input_format.cpp:261 msgid "Normally mkvmerge does not change the timing information (frame/field rate) stored in the video bitstream. With this option that information is adjusted to match the container timing information. The container timing information can come from various sources: from the command line via --default-duration, the source container or derived from the bitstream." -msgstr "" +msgstr "通常 mkvmerge 不會改變儲存在影片位元串流中的時間資訊 (影格/圖場率)。使用此選項是調整資訊以符合封裝容器的時間資訊。此容器時間資訊能夠來自各種不同的來源:經由 --default-duration 命令列,從來源容器或位元串流中取得。" #: src/mmg/cli_options_dlg.cpp:144 msgid "Normally mkvmerge keeps aspect ratio information in MPEG4 video bitstreams and puts the information into the container. This option causes mkvmerge to remove the aspect ratio information from the bitstream." @@ -5216,7 +5216,7 @@ msgstr "不是有效的 Matroska 檔 (未發現有效的 剪輯/0 層級元件)" msgid "Not a valid number or not positive." msgstr "無效的數字或不是正的。" -#: src/merge/pr_generic.cpp:1155 +#: src/merge/pr_generic.cpp:1146 #, boost-format msgid "Note that the Matroska specifications regarding the storage of '%1%' have not been finalized yet. mkvmerge's support for it is therefore subject to change and uses the CodecID '%2%/EXPERIMENTAL' instead of '%2%'. This warning will be removed once the specifications have been finalized and mkvmerge has been updated accordingly.\n" msgstr "注意 Matroska 規範有關「%1%」的儲存方面尚未完成。mkvmerge 支援是因為改變主題且使用 CodecID '%2%/EXPERIMENTAL' 替代「%2%」。一旦規範完成會移除這個警告而 mkvmerge 也會相應地更新。\n" @@ -5430,7 +5430,7 @@ msgstr "PGS/SUP 字幕" msgid "PGSSUP" msgstr "PGSSUP" -#: src/input/r_vobsub.cpp:538 +#: src/input/r_vobsub.cpp:539 #, boost-format msgid "PTS error: 0x%|1$02x| %|2$02x|%|3$02x| %|4$02x|%|5$02x|\n" msgstr "PTS 錯誤: 0x%|1$02x| %|2$02x|%|3$02x| %|4$02x|%|5$02x|\n" @@ -5440,7 +5440,7 @@ msgstr "PTS 錯誤: 0x%|1$02x| %|2$02x|%|3$02x| %|4$02x|%|5$02x|\n" msgid "Packet number %1% contained an invalid FLAC header and is being skipped.\n" msgstr "套件編號 %1% 包含無效的 FLAC 表頭,將被跳過。\n" -#: src/merge/pr_generic.cpp:257 +#: src/merge/pr_generic.cpp:254 #, boost-format msgid "Packet queue not empty (flushed: %1%). Frames have been lost during remux. %2%\n" msgstr "套件佇列不是空的 (已緩衝: %1%)。畫格已在重新合成時丟失。 %2%\n" @@ -5606,46 +5606,46 @@ msgstr "QuickTime 音訊/視訊檔" msgid "QuickTime/MP4" msgstr "QuickTime/MP4" -#: src/input/r_qtmp4.cpp:322 +#: src/input/r_qtmp4.cpp:321 #, boost-format msgid "Quicktime/MP4 reader: '%1%' atom is too small. Expected size: >= %2%. Actual size: %3%.\n" msgstr "Quicktime/MP4 讀取器:「%1%」單元過小。預期大小: >= %2%。實際大小: %3%。\n" -#: src/input/r_qtmp4.cpp:1794 +#: src/input/r_qtmp4.cpp:1776 msgid "Quicktime/MP4 reader: Constant samplesize & variable duration not yet supported. Contact the author if you have such a sample file.\n" msgstr "Quicktime/MP4 讀取器: 尚不支援固定取樣大小與可變時間長度。如果您有這樣的樣本檔案,請聯繫作者。\n" -#: src/input/r_qtmp4.cpp:1166 +#: src/input/r_qtmp4.cpp:1165 #, boost-format msgid "Quicktime/MP4 reader: Could not read chunk number %1%/%2% with size %3% from position %4%. Aborting.\n" msgstr "Quicktime/MP4 讀取器: 無法讀取塊號 %1%/%2% 大小 %3% 位置 %4%。正在中止。\n" -#: src/input/r_qtmp4.cpp:2099 -#: src/input/r_qtmp4.cpp:2113 +#: src/input/r_qtmp4.cpp:2081 +#: src/input/r_qtmp4.cpp:2095 #, boost-format msgid "Quicktime/MP4 reader: Could not read the extended sound description atom for track ID %1%.\n" msgstr "Quicktime/MP4 讀取器: 無法讀取軌道 %1% 的擴展音訊描述單元。\n" -#: src/input/r_qtmp4.cpp:2070 +#: src/input/r_qtmp4.cpp:2052 #, boost-format msgid "Quicktime/MP4 reader: Could not read the sound description atom for track ID %1%.\n" msgstr "Quicktime/MP4 讀取器: 無法讀取軌道 %1% 的音訊描述單元。\n" -#: src/input/r_qtmp4.cpp:914 +#: src/input/r_qtmp4.cpp:913 #, boost-format msgid "Quicktime/MP4 reader: Could not read the stream description atom for track ID %1%.\n" msgstr "Quicktime/MP4 讀取器: 無法讀取軌道 %1% 的流描述單元。\n" -#: src/input/r_qtmp4.cpp:2145 +#: src/input/r_qtmp4.cpp:2127 #, boost-format msgid "Quicktime/MP4 reader: Could not read the video description atom for track ID %1%.\n" msgstr "Quicktime/MP4 讀取器: 無法讀取軌道 %1% 的視訊描述單元。\n" -#: src/input/r_qtmp4.cpp:254 +#: src/input/r_qtmp4.cpp:253 msgid "Quicktime/MP4 reader: Have not found any header atoms.\n" msgstr "Quicktime/MP4 讀取器: 未發現任何表頭單元。\n" -#: src/input/r_qtmp4.cpp:256 +#: src/input/r_qtmp4.cpp:255 msgid "Quicktime/MP4 reader: Have not found the 'mdat' atom. No movie data found.\n" msgstr "Quicktime/MP4 讀取器: 未發現「mdat」單元。找不到影片資料。\n" @@ -5654,75 +5654,75 @@ msgstr "Quicktime/MP4 讀取器: 未發現「mdat」單元。找不到影片資 msgid "Quicktime/MP4 reader: Invalid chunk size %1% at %2%.\n" msgstr "Quicktime/MP4 讀取器: 無效的區塊大小 %1% 於 %2%。\n" -#: src/input/r_qtmp4.cpp:2520 +#: src/input/r_qtmp4.cpp:2502 #, boost-format msgid "Quicktime/MP4 reader: MPEG4 part 10/AVC track %1% is missing its decoder config. Skipping this track.\n" msgstr "Quicktime/MP4 讀取器: MPEG4 part 10/AVC 軌道 %1% 缺少解碼器設定資訊。正在跳過該軌。\n" -#: src/input/r_qtmp4.cpp:2551 +#: src/input/r_qtmp4.cpp:2533 #, boost-format msgid "Quicktime/MP4 reader: MPEG4 track %1% is missing the esds atom/the decoder config. Skipping this track.\n" msgstr "Quicktime/MP4 讀取器: MPEG4 軌 %1% 缺少 esds 單元/解碼器設定資訊。正在跳過該軌。\n" -#: src/input/r_qtmp4.cpp:491 +#: src/input/r_qtmp4.cpp:490 #, boost-format msgid "Quicktime/MP4 reader: The 'media header' atom ('mdhd') uses the unsupported version %1%.\n" msgstr "Quicktime/MP4 讀取器: 「media header」媒體表頭單元 (「mdhd」) 使用了不受支援的版本 %1%。\n" -#: src/input/r_qtmp4.cpp:907 +#: src/input/r_qtmp4.cpp:906 #, boost-format msgid "Quicktime/MP4 reader: The 'size' field is too small in the stream description atom for track ID %1%.\n" msgstr "Quicktime/MP4 讀取器: 軌道 %1% 的媒體流描述單元的「size」欄位過小。\n" -#: src/input/r_qtmp4.cpp:496 +#: src/input/r_qtmp4.cpp:495 msgid "Quicktime/MP4 reader: The 'time scale' parameter was 0. This is not supported.\n" msgstr "Quicktime/MP4 讀取器: 「time scale」時間縮放參數為 0。這是不支援的。\n" -#: src/input/r_qtmp4.cpp:2483 +#: src/input/r_qtmp4.cpp:2465 #, boost-format msgid "Quicktime/MP4 reader: The AAC track %1% is missing the esds atom/the decoder config. Skipping this track.\n" msgstr "Quicktime/MP4 讀取器: 該 AAC 軌道 %1% 缺少 esds 單元/解碼器設定資訊。正在跳過該軌。\n" -#: src/input/r_qtmp4.cpp:2478 +#: src/input/r_qtmp4.cpp:2460 #, boost-format msgid "Quicktime/MP4 reader: The audio track %1% is using an unsupported 'object type id' of %2% in the 'esds' atom. Skipping this track.\n" msgstr "Quicktime/MP4 讀取器: 音軌 %1% 的「esds」單元使用了不支援的「object type id」物件類別號 %2%。正在跳過該軌。\n" -#: src/input/r_qtmp4.cpp:2530 +#: src/input/r_qtmp4.cpp:2512 #, boost-format msgid "Quicktime/MP4 reader: The video track %1% is missing the ESDS atom. Skipping this track.\n" msgstr "Quicktime/MP4 讀取器: 視訊軌 %1% 遺失 ESDS 單元。正在跳過此軌。\n" -#: src/input/r_qtmp4.cpp:354 +#: src/input/r_qtmp4.cpp:353 #, boost-format msgid "Quicktime/MP4 reader: This file uses compressed headers with an unknown or unsupported compression algorithm '%1%'. Aborting.\n" msgstr "Quicktime/MP4 讀取器: 此檔案用不明或不支援的壓縮演算法「%1%」壓縮表頭。正在中止。\n" -#: src/input/r_qtmp4.cpp:387 +#: src/input/r_qtmp4.cpp:386 #, boost-format msgid "Quicktime/MP4 reader: This file uses compressed headers, but the expected uncompressed size (%1%) was not what is available after uncompressing (%2%).\n" msgstr "Quicktime/MP4 讀取器: 此檔案的表頭經過壓縮,但預期的解壓縮後大小 (%1%) 與解壓縮得到的大小不符 (%2%)。\n" -#: src/input/r_qtmp4.cpp:378 +#: src/input/r_qtmp4.cpp:377 #, boost-format msgid "Quicktime/MP4 reader: This file uses compressed headers, but the zlib library could not be initialized. Error code from zlib: %1%. Aborting.\n" msgstr "Quicktime/MP4 讀取器: 此檔按的表頭經過壓縮,但無法初始化 zlib 庫。zlib 錯誤碼: %1%。正在中止。\n" -#: src/input/r_qtmp4.cpp:383 +#: src/input/r_qtmp4.cpp:382 #, boost-format msgid "Quicktime/MP4 reader: This file uses compressed headers, but they could not be uncompressed. Error code from zlib: %1%. Aborting.\n" msgstr "Quicktime/MP4 讀取器: 此檔按的表頭經過壓縮,但無法解壓。zlib 錯誤碼: %1%。正在中止。\n" -#: src/input/r_qtmp4.cpp:2451 -#: src/input/r_qtmp4.cpp:2466 -#: src/input/r_qtmp4.cpp:2504 -#: src/input/r_qtmp4.cpp:2569 +#: src/input/r_qtmp4.cpp:2433 +#: src/input/r_qtmp4.cpp:2448 +#: src/input/r_qtmp4.cpp:2486 +#: src/input/r_qtmp4.cpp:2551 #, boost-format msgid "Quicktime/MP4 reader: Track %1% is missing some data. Broken header atoms?\n" msgstr "Quicktime/MP4 讀取器: 軌道 %1% 缺少一些資料。表頭單元損壞?\n" -#: src/input/r_qtmp4.cpp:2078 -#: src/input/r_qtmp4.cpp:2152 +#: src/input/r_qtmp4.cpp:2060 +#: src/input/r_qtmp4.cpp:2134 #, boost-format msgid "Quicktime/MP4 reader: Track ID %1% has more than one FourCC. Only using the first one (%|2$.4s|) and not this one (%|3$.4s|).\n" msgstr "Quicktime/MP4 讀取器: 軌道 ID %1% 有多於一個 FourCC。只使用了第一個 (%|2$.4s|) 而非 (%|3$.4s|)。\n" @@ -5769,7 +5769,7 @@ msgstr "準備就緒" msgid "Real output sampling frequency in Hz." msgstr "實際輸出的取樣頻率,單位 Hz。" -#: src/output/p_realaudio.h:35 +#: src/output/p_realaudio.h:34 msgid "RealAudio" msgstr "RealAudio" @@ -5781,7 +5781,7 @@ msgstr "RealMedia" msgid "RealMedia audio/video files" msgstr "RealMedia 音訊/視訊檔" -#: src/input/r_real.cpp:343 +#: src/input/r_real.cpp:338 #, boost-format msgid "RealMedia files may contain HE-AAC / AAC+ / SBR AAC audio. In some cases this can NOT be detected automatically. Therefore you have to specifiy '--aac-is-sbr %1%' manually for this input file if the file actually contains SBR AAC. The file will be muxed in the WRONG way otherwise. Also read mkvmerge's documentation.\n" msgstr "RealMedia 檔可能包含 HE-AAC / AAC+ / SBR AAC 音訊。某些情況下這 *無法* 自動偵測。因此您需要為輸入檔手動指定「--aac-is-sbr %1%」如果檔案確實含有 SBR AAC。否則檔案會被 *錯誤地* 合成。參考閱讀 mkvmerge 的使用說明。\n" @@ -6215,7 +6215,7 @@ msgstr "設定軌道的顯示寬度。必須同時設定高度,否則此欄位 #: src/mmg/options/mkvmerge.cpp:57 msgid "Sets the priority that mkvmerge will run with. Chosing 'lowest' will cause mkvmerge to select a low I/O priority as well." -msgstr "" +msgstr "設定 mkvmerge 執行的優先權。選擇「最低」會讓 mkvmerge 也選擇低優先權的輸入輸出 (I/O)。" #: src/mmg/tabs/global.cpp:331 msgid "" @@ -6240,12 +6240,12 @@ msgstr "設定: %1%" msgid "Several options that control the overall output that mkvmerge creates." msgstr "控制 mkvmerge 整體輸出的一些選項。" -#: src/input/r_real.cpp:557 +#: src/input/r_real.cpp:554 #, boost-format msgid "Short AAC audio packet (length: %1% < %2%)\n" msgstr "短的 AAC 音訊套件 (長: %1% < %2%)\n" -#: src/input/r_real.cpp:550 +#: src/input/r_real.cpp:547 #, boost-format msgid "Short AAC audio packet (length: %1% < 2)\n" msgstr "短的 AAC 音訊套件 (長: %1% < 2)\n" @@ -6371,12 +6371,12 @@ msgstr "大小" msgid "Size:" msgstr "大小:" -#: src/output/p_aac.cpp:70 +#: src/output/p_aac.cpp:71 #, boost-format msgid "Skipping %1% bytes (no valid AAC header found). This might cause audio/video desynchronisation.\n" msgstr "跳過 %1% 位元組 (未發現有效的 AAC 頭)。這可能會導致音畫不同步。\n" -#: src/output/p_dts.cpp:86 +#: src/output/p_dts.cpp:85 #, boost-format msgid "Skipping %1% bytes (no valid DTS header found). This might cause audio/video desynchronisation.\n" msgstr "跳過 %1% 位元組 (未發現有效的 DTS 表頭)。這可能會導致聲音與畫面不同步。\n" @@ -6593,7 +6593,7 @@ msgstr "標籤" msgid "Tags are not allowed in WebM compliant files. No tags will be written into any output file.\n" msgstr "在 WebM 遵循檔裡不能有標籤。不會將標籤寫進任何輸出檔。\n" -#: src/merge/pr_generic.cpp:1445 +#: src/merge/pr_generic.cpp:1436 #, boost-format msgid "Tags for track ID %1%: %2% entries" msgstr "軌道 ID 的標籤 %1%: %2% 項目" @@ -6628,16 +6628,16 @@ msgstr "純文字檔 (*.txt)|*.txt|%s" msgid "Text files (*.txt)|*.txt|All files|*.*" msgstr "純文字檔 (*.txt)|*.txt|所有檔|*.*" -#: src/input/r_vobsub.cpp:235 +#: src/input/r_vobsub.cpp:236 msgid "The .idx file does not contain an 'id: ...' line to indicate the language.\n" msgstr "此 .idx 檔案不包含指明語言的第「id: ...」行。\n" -#: src/output/p_aac.cpp:203 +#: src/output/p_aac.cpp:204 #, boost-format msgid "The AAC profiles are different: %1% and %2%" msgstr "AAC profile 不同: %1% 與 %2%" -#: src/input/r_qtmp4.cpp:1267 +#: src/input/r_qtmp4.cpp:1257 msgid "The AVC video track is missing the 'CTTS' atom for frame timecode offsets. However, AVC/h.264 allows frames to have more than the traditional one (for P frames) or two (for B frames) references to other frames. The timecodes for such frames will be out-of-order, and the 'CTTS' atom is needed for getting the timecodes right. As it is missing the timecodes for this track might be wrong. You should watch the resulting file and make sure that it looks like you expected it to.\n" msgstr "此 AVC 視訊軌缺少「CTTS」畫格時間碼偏移單元。然而,AVC/h.264 允許畫格有超過通常的一次 (對於 P 畫格) 或兩次 (對於 B 畫格) 畫格參考。此類畫格的時間碼會變得無序,需要「CTTS」單元來修正。由於缺少時間碼,此軌可能發生錯誤。請查看生成的檔案,確認它是不是您預期的樣子。\n" @@ -6646,7 +6646,7 @@ msgstr "此 AVC 視訊軌缺少「CTTS」畫格時間碼偏移單元。然而, msgid "The CUE sheet for track %1% will be written to '%2%'.\n" msgstr "軌道 %1% 的 CUE 表單會寫入到 「%2%」。\n" -#: src/merge/pr_generic.h:477 +#: src/merge/connection_checks.h:54 msgid "The CodecID of the two tracks is different: %1% and %2%" msgstr "兩軌的 CodecID 不同: %1% 與 %2%" @@ -6679,12 +6679,12 @@ msgstr "檔案「%s」中軌道 nr. %s 的 FourCC 設定值不是正好四個字 msgid "The GUI is configured to use the mkvmerge executable from a different version (%1%) than the GUI itself (%2%). This is not supported but will not be prevented either. You should change the mkvmerge executable in the preferences dialog." msgstr "此圖形介面 (GUI) 設定使用 mkvmerge 可執行檔版本 (%1%) 與自己的版本 (%2%) 不同。不建議這種情形,但也不會阻止。你可以在偏好設定對話窗裡變更 mkvmerge 可執行檔。" -#: src/input/r_ogm.cpp:1495 +#: src/input/r_ogm.cpp:1485 #, boost-format msgid "The Kate identification header could not be parsed (%1%).\n" msgstr "無法解析 Kate 辨識表頭 (%1%)。\n" -#: src/input/r_qtmp4.cpp:796 +#: src/input/r_qtmp4.cpp:795 #, boost-format msgid "The MP4 file '%1%' contains chapters whose format was not recognized. This is often the case if the chapters are not encoded in UTF-8. Use the '--chapter-charset' option in order to specify the charset to use.\n" msgstr "此 MP4 檔「%1%」含有無法辨識格式的章節。若章節不是用 UTF-8 編碼時常發生這個情形。使用「--chapter-charset」選項來指定要使用的字元編碼集。\n" @@ -6709,7 +6709,7 @@ msgstr "" msgid "The NALU size length must be a number between 2 and 4 inclusively in '--nalu-size-length %1%'.\n" msgstr "NALU 長度大小必須為 2 與 4 之間(含 2 與 4)的數字,在「--nalu-size-length %1%」中。\n" -#: src/input/r_ogm.cpp:1325 +#: src/input/r_ogm.cpp:1319 #, boost-format msgid "The Theora identifaction header could not be parsed (%1%).\n" msgstr "Theora 識別表頭無法解析 (%1%)。\n" @@ -6826,13 +6826,13 @@ msgid "" "\n" "Note: This warning can be deactivated in the 'options' dialog. Turn off the 'Warn about usage...' option." msgstr "" -"已使用過章節編輯器,並且包含資料。然而,在『整體』選項頁沒有選擇任何章節檔。在 mmg 中,章節編輯器是獨立於合成過程的。編輯器中顯示的章節 *不會* 被合成至輸出檔中。只有章節編輯器功能表中的各「儲存」功能會使章節被寫入硬碟。\n" +"已使用過章節編輯器,並且包含資料。然而,在『總體』選項頁沒有選擇任何章節檔。在 mmg 中,章節編輯器是獨立於合成過程的。編輯器中顯示的章節 *不會* 被合成至輸出檔中。只有章節編輯器功能表中的各「儲存」功能會使章節被寫入硬碟。\n" "\n" "您確定要繼續合成嗎?\n" "\n" "備註: 本警告可以在「設定」選項頁停用。關閉「對...用法發出警告」選項即可。" -#: src/output/p_mpeg4_p10.cpp:162 +#: src/output/p_mpeg4_p10.cpp:164 #, boost-format msgid "The chosen NALU size length of %1% is too small. Try using '4'.\n" msgstr "選擇的 NALU 長度大小 %1% 過小。請嘗試使用「4」。\n" @@ -6841,18 +6841,18 @@ msgstr "選擇的 NALU 長度大小 %1% 過小。請嘗試使用「4」。\n" msgid "The closing parenthesis ')' are missing.\n" msgstr "缺少表示關閉的括號「)」。\n" -#: src/merge/pr_generic.cpp:1255 +#: src/merge/pr_generic.cpp:1246 #, boost-format msgid "The codec type '%1%' cannot be used in a WebM compliant file.\n" msgstr "此編解碼器類型「%1%」無法用在 WebM 遵循檔。\n" #: src/output/p_flac.cpp:101 -#: src/merge/pr_generic.h:484 +#: src/merge/connection_checks.h:61 #, boost-format msgid "The codec's private data does not match (lengths: %1% and %2%)." msgstr "編解碼器專有資料不符 (長度: %1% 與 %2%)。" -#: src/output/p_mpeg4_p10.cpp:109 +#: src/output/p_mpeg4_p10.cpp:110 #, boost-format msgid "The codec's private data does not match. Both have the same length (%1%) but different content." msgstr "編解碼器專有資料不符。長度相同 (%1%) 但內容不同。" @@ -6875,7 +6875,7 @@ msgstr "正在寫入 cue 項目 (此索引)...\n" msgid "The current file (number %d) cannot be removed. There are other files -- at least file number %d -- whose tracks are supposed to be appended to tracks from this file. Please remove those files first." msgstr "目前檔案 (序號 %d) 不能移除。有其他檔案 -- 至少檔案號為 %d 的檔案 -- 有要添加至此檔某軌道的軌道。請先移除那些檔案。" -#: src/merge/pr_generic.cpp:866 +#: src/merge/pr_generic.cpp:857 #, boost-format msgid "The current packet's timecode is smaller than that of the previous packet. This usually means that the source file is a Matroska file that has not been created 100%% correctly. The timecodes of all packets will be adjusted by %1%ms in order not to lose any data. This may throw audio/video synchronization off, but that can be corrected with mkvmerge's \"--sync\" option. If you already use \"--sync\" and you still get this warning then do NOT worry -- this is normal. If this error happens more than once and you get this message more than once for a particular track then either is the source file badly mastered, or mkvmerge contains a bug. In this case you should contact the author Moritz Bunkus .\n" msgstr "目前套件的時間碼比前一個套件的小。這通常表明來源檔未正常 100%% 建立的 Matroska 檔案。所有套件的時間碼將以 %1%ms 調整以避免丟失任何資料。這可能導致音/視訊不同步,但可以透過 mkvmerge 的 \"--sync\" 選項修正。如果您已經使用了 \"--sync\" 但仍然收到本警告,請 *不要* 著急 -- 這是正常的。如果對於一個特定軌超過一次出現本錯誤且您超過一次收到本訊息,既可能是因為來源檔嚴重錯誤,也可能是因為 mkvmerge 包含了某個 bug。如果是這樣,請聯繫作者 Moritz Bunkus 。\n" @@ -6908,11 +6908,11 @@ msgstr "" msgid "The difference between tags associated with a track and global tags is explained in mkvmerge's documentation. In short: global tags apply to the complete file while the tags you can add on the 'input' tab apply to only one track." msgstr "關於關聯至軌道的標籤與整體標籤的區別已在 mkvmerge 文件檔中作出解釋。簡而言之: 整體標籤應用於整個檔案,而您能在「輸入」選項分頁中添加的標籤僅能應用於單個軌道。" -#: src/merge/pr_generic.h:472 +#: src/merge/connection_checks.h:49 msgid "The display height of the two tracks is different: %1% and %2%" msgstr "兩軌的顯示高度不同: %1% 與 %2%" -#: src/merge/pr_generic.h:467 +#: src/merge/connection_checks.h:44 msgid "The display width of the two tracks is different: %1% and %2%" msgstr "兩軌的顯示寬度不同: %1% 與 %2%" @@ -6944,7 +6944,7 @@ msgstr "要從在章節的剪輯 UID 連結剪輯播放的版本 UID。為一個 msgid "The element was written at the end of the file, but the segment size could not be updated. Therefore the element will not be visible. The process will be aborted. The file has been changed!" msgstr "元件已被寫至檔案結尾部,但剪輯大小無法更新。因此這些元件將不可見。處理處理程序將被中止。檔已被修改!" -#: src/output/p_mpeg4_p2.cpp:378 +#: src/output/p_mpeg4_p2.cpp:372 #, boost-format msgid "The extracted values for video width and height from the MPEG4 layer 2 video data bitstream differ from what the values in the source container. The ones from the video data bitstream (%1%x%2%) will be used.\n" msgstr "從 MPEG4 layer 2 視訊資料位元流中提取的視訊寬度和高度值與來源容器中的不同。將使用視訊資料位元流中的 (%1%x%2%)。\n" @@ -6999,7 +6999,7 @@ msgstr "檔案「%1%」已開啟以寫入。\n" msgid "The file '%1%' has unknown type. Please have a look at the supported file types ('mkvmerge --list-types') and contact the author Moritz Bunkus if your file type is supported but not recognized properly.\n" msgstr "檔案「%1%」類型未知。請查看支援的檔案類型 (「mkvmerge --list-types」),若您的檔案類型受支援但被錯誤識別,請聯繫作者 Moritz Bunkus 。\n" -#: src/merge/pr_generic.cpp:1696 +#: src/merge/pr_generic.cpp:1669 #, boost-format msgid "The file '%1%' is a non-supported file type (%2%).\n" msgstr "此檔案「%1%」類型不支援 (%2%)。\n" @@ -7062,9 +7062,8 @@ msgstr "此檔案為不支援的容器格式 (%s)。" #: src/mmg/wx_kax_analyzer.cpp:36 #: src/propedit/propedit.cpp:94 -#, fuzzy msgid "The file is being analyzed." -msgstr "檔案已分析。\n" +msgstr "正在分析檔案。" #: src/merge/output_control.cpp:282 msgid "The file is being fixed, part 1/4..." @@ -7126,7 +7125,7 @@ msgstr "你加入的檔案為播放清單。該檔案放置的目錄含有 %1% #: src/common/kax_file.cpp:48 #, boost-format msgid "The first cluster timecode after the resync is %1%.\n" -msgstr "" +msgstr "第一個叢集重新同步後的時間碼為 %1%。\n" #: src/merge/mkvmerge.cpp:1755 msgid "The first file cannot be appended because there are no files to append to.\n" @@ -7174,7 +7173,7 @@ msgstr "第四種模式可提取章節並將章節轉換成 XML。此輸出會 msgid "The given timecode scale factor is outside the valid range (1...10000000 or -1 for 'sample precision even if a video track is present').\n" msgstr "給定的時間碼縮放比例超出有效範圍 (1...10000000 或 -1 代表「即使視訊軌已提供時的取樣精確度」)。\n" -#: src/merge/pr_generic.h:462 +#: src/merge/connection_checks.h:39 msgid "The height of the two tracks is different: %1% and %2%" msgstr "兩軌高度不同: %1% 與 %2%" @@ -7245,7 +7244,7 @@ msgstr "語言碼「%1%」不是有效的 ISO639-2 語言碼,將被忽略。\n #: src/common/kax_file.cpp:197 #, boost-format msgid "The last timecode processed before the error was encountered was %1%.\n" -msgstr "" +msgstr "發生錯誤前處理的最後時間碼為 %1%。\n" #: src/merge/timecode_factory.cpp:213 #, boost-format @@ -7317,11 +7316,11 @@ msgstr "輸出檔「%1%」的名稱與輸入檔之一相同。這將使 mkvmerge msgid "The next UID was already given in '%1% %2%'.\n" msgstr "下一 UID 已在「%1% %2%」給出。\n" -#: src/merge/pr_generic.h:452 +#: src/merge/connection_checks.h:29 msgid "The number of bits per sample of the two audio tracks is different: %1% and %2%" msgstr "兩軌的每次取樣位元數(音訊位元深度)不同: %1% 與 %2%" -#: src/merge/pr_generic.h:447 +#: src/merge/connection_checks.h:24 msgid "The number of channels of the two audio tracks is different: %1% and %2%" msgstr "兩音軌的聲道數不同: %1% 與 %2%" @@ -7431,7 +7430,7 @@ msgstr "原因不詳。" msgid "The root element must be <%1%>." msgstr "根元件必須為 <%1%>。" -#: src/merge/pr_generic.h:442 +#: src/merge/connection_checks.h:19 msgid "The sample rate of the two audio tracks is different: %1% and %2%" msgstr "兩音軌的取樣頻率不同: %1% 與 %2%" @@ -7508,7 +7507,7 @@ msgstr "位置 %2% 上的標籤或屬性「%1%」包含超過本身允許範圍 msgid "The tag or attribute '%1%' at position %2% contains invalid or mal-formed data." msgstr "位置 %2% 上的標籤或屬性「%1%」包含無效或不正確格式的資料。" -#: src/merge/pr_generic.cpp:277 +#: src/merge/pr_generic.cpp:274 #, boost-format msgid "The tags in '%1%' could not be parsed: some mandatory elements are missing.\n" msgstr "無法解析「%1%」中的標籤: 缺少某些必要元件。\n" @@ -7575,7 +7574,7 @@ msgstr "在這些時間碼後開始建立新的輸出檔。這些時間碼以整 msgid "The timecodes can be given either in the form HH:MM:SS.nnnnnnnnn or as the number of seconds followed by 's'." msgstr "時間碼可以用 HH:MM:SS.nnnnnnnnn 格式表示或在秒數後面加「s」。" -#: src/input/r_ogm.cpp:613 +#: src/input/r_ogm.cpp:612 msgid "The timecodes for this stream have been reset in the middle of the file. This is not supported. The current packet will be discarded.\n" msgstr "此媒體流的時間碼在檔案中途重置。這是不支援的。目前資料包將被廢除。\n" @@ -7623,7 +7622,7 @@ msgstr "軌道參數不符。" msgid "The update information could not be retrieved from %1%.\n" msgstr "無法從 %1% 取得更新資訊。\n" -#: src/merge/pr_generic.h:457 +#: src/merge/connection_checks.h:34 msgid "The width of the two tracks is different: %1% and %2%" msgstr "兩軌寬度不同: %1% 與 %2%" @@ -7667,8 +7666,8 @@ msgstr "有警告資訊" msgid "There were warnings, or the process was terminated." msgstr "有警告資訊,或者處理處理程序被中止。" -#: src/input/r_avi.cpp:563 -#: src/input/r_real.cpp:294 +#: src/input/r_avi.cpp:555 +#: src/input/r_real.cpp:289 msgid "This AAC track does not contain valid headers. Could not parse the AAC information.\n" msgstr "此 AAC 軌道不含有效的表頭。無法解析 AAC 資訊。\n" @@ -7682,31 +7681,31 @@ msgstr "此 AC3 軌道的開頭包含 %1% 位元組的 非-AC3 資料。這相 msgid "This AC3 track contains %1% bytes of non-AC3 data which were skipped. The audio/video synchronization may have been lost.\n" msgstr "此 AC3 軌道包含 %1% 位元組的 非-AC3 資料,已跳過。音/視訊同步可能已喪失。\n" -#: src/output/p_avc.cpp:97 +#: src/output/p_avc.cpp:98 #, boost-format msgid "This AVC/h.264 contains frames that are too big for the current maximum NALU size. You have to re-run mkvmerge and set the maximum NALU size to %1% for this track (command line parameter '--nalu-size-length %2%:%1%').\n" msgstr "此 AVC/h.264 包含大於目前最大 NALU 長的畫格。您需要重新啟動 mkvmerge 並設定此軌的最大 NALU 大小為 %1% (命令列參數「--nalu-size-length %2%:%1%」)。\n" -#: src/output/p_avc.cpp:115 +#: src/output/p_avc.cpp:116 #, boost-format msgid "This AVC/h.264 track does not start with a key frame. The first %1% frames have been skipped.\n" msgstr "此 AVC/h.264 軌道未以關鍵畫格開頭。已跳過開頭 %1% 畫格。\n" #: src/output/p_avc.cpp:126 msgid "This AVC/h.264 track's timing information indicates that it uses a variable frame rate. However, no default duration nor an external timecode file has been provided for it, nor does the source container provide timecodes. The resulting timecodes may not be useful.\n" -msgstr "" +msgstr "此 AVC/h.264 軌道的時間資訊有標明軌道使用的影格率。可是沒有提供預設時間長度或外部時間碼檔案,來源容器也不提供時間碼。合成後的時間碼可能無法使用。\n" -#: src/output/p_mp3.cpp:58 +#: src/output/p_mp3.cpp:59 #, boost-format msgid "This MPEG audio track contains %1% bytes of non-MP3 data at the beginning. This corresponds to a delay of %2%ms. This delay will be used instead of the garbage data.\n" msgstr "此 MPEG 音軌的開頭包含 %1% 位元組的 非-MP3 資料。這相當於 %2%ms 的延遲。將使用此延遲替代無用資料。\n" -#: src/output/p_mp3.cpp:67 +#: src/output/p_mp3.cpp:68 #, boost-format msgid "This MPEG audio track contains %1% bytes of non-MP3 data which were skipped. The audio/video synchronization may have been lost.\n" msgstr "此 MPEG 音軌包含 %1% 位元組的 非-MP3 資料,已跳過。音/視訊同步可能已喪失。\n" -#: src/input/r_ogm.cpp:857 +#: src/input/r_ogm.cpp:856 msgid "This Ogg/OGM file contains chapter or title information. Unfortunately the charset used to store this information in the file cannot be identified unambiguously. The program assumes that your system's current charset is appropriate. This can be overridden with the '--chapter-charset ' switch.\n" msgstr "此 Ogg/OGM 檔包含章節或標題資訊。不幸的是此檔中存儲這些資訊使用的字元集無法準確識別。程式假定以您系統的目前字元集為準。您可以透過「--chapter-charset 」開關替代該假定值。\n" @@ -7915,7 +7914,7 @@ msgstr "軌道 %1%(CodecID 為「%2%」)缺少 \"default duration\" 預設 msgid "Track %1%: %2%, codec ID: %3%%4%%5%%6%\n" msgstr "軌道 %1%: %2%, 編解碼器 ID: %3%%4%%5%%6%\n" -#: src/input/r_qtmp4.cpp:2227 +#: src/input/r_qtmp4.cpp:2209 #, boost-format msgid "Track %1%: AAC found, but decoder config data has length %2%.\n" msgstr "軌道 %1%: 已發現 AAC, 但解碼器設定資料長度為 %2%。\n" @@ -7935,7 +7934,7 @@ msgstr "軌道 %1%: NAL 太大。根據檔頭字段的大小: %2%,封包可用 msgid "Track %1%: Subtitle entry number %2% is missing its duration. Assuming a duration of 1s.\n" msgstr "軌道 %1%: 字幕編號 %2% 缺少時間長度。假定為 1 秒。\n" -#: src/input/r_qtmp4.cpp:2230 +#: src/input/r_qtmp4.cpp:2212 #, boost-format msgid "Track %1%: The AAC information could not be parsed.\n" msgstr "軌道 %1%: AAC 資訊無法解析。\n" @@ -7946,7 +7945,7 @@ msgstr "軌道 %1%: AAC 資訊無法解析。\n" msgid "Track ID %1% has an unknown AAC type.\n" msgstr "軌道 ID %1% 的 AAC 類型未知。\n" -#: src/merge/pr_generic.cpp:1439 +#: src/merge/pr_generic.cpp:1430 #, boost-format msgid "Track ID %1%: %2% (%3%)" msgstr "軌道 ID %1%: %2% (%3%)" @@ -8080,17 +8079,17 @@ msgstr "單圖場畫格之後意外的圖片畫格。在分離前請修復 MPEG2 msgid "Unknown" msgstr "未知" -#: src/output/p_aac.cpp:127 +#: src/output/p_aac.cpp:128 #, boost-format msgid "Unknown AAC MPEG-2 profile %1%." msgstr "未知的 AAC MPEG-2 profile %1%。" -#: src/output/p_aac.cpp:115 +#: src/output/p_aac.cpp:116 #, boost-format msgid "Unknown AAC MPEG-4 object type %1%." msgstr "未知的 AAC MPEG-4 物件類型 %1%。" -#: src/input/r_ogm.cpp:563 +#: src/input/r_ogm.cpp:562 #, boost-format msgid "Unknown audio stream type 0x%|1$04x|. Stream ID %2% will be ignored.\n" msgstr "未知音訊流類型 0x%|1$04x|。流 ID %2% 將被忽略。\n" @@ -8120,7 +8119,7 @@ msgstr "上一個 UID 格式未知,在「%1% %2%」。\n" msgid "Unknown format for the segment UID '%3%' in '%1% %2%'.\n" msgstr "此剪輯 UID「%3%」的格式不明,在「%1% %2%」。\n" -#: src/input/r_vobsub.cpp:608 +#: src/input/r_vobsub.cpp:609 #, boost-format msgid "Unknown header 0x%|1$02x|%|2$02x|%|3$02x|%|4$02x|\n" msgstr "未知的表頭 0x%|1$02x|%|2$02x|%|3$02x|%|4$02x|\n" @@ -8140,7 +8139,7 @@ msgstr "未知的選項「%1%」。\n" msgid "Unknown parse mode in '%1% %2%'.\n" msgstr "未知的解析模式「%1% %2%」。\n" -#: src/input/r_avi.cpp:517 +#: src/input/r_avi.cpp:510 #, boost-format msgid "Unknown/unsupported audio format 0x%|1$04x| for this audio track.\n" msgstr "此音軌的格式 0x%|1$04x| 未知或不支援。\n" @@ -8154,7 +8153,7 @@ msgstr "無法辨識的命令列選項「%1%」。\n" msgid "Unsigned integer" msgstr "不帶正負號的整數" -#: src/input/r_vobsub.cpp:477 +#: src/input/r_vobsub.cpp:478 #, boost-format msgid "Unsupported MPEG mpeg_version: 0x%|1$02x| in packet %2% for timecode %3%, assuming MPEG2. No further warnings will be printed for this track.\n" msgstr "不支援 MPEG mpeg_version: 0x%|1$02x| 於資料套件 %2% 時間碼 %3% 處,假定為 MPEG2。不會再對此軌輸出警告。\n" @@ -8163,7 +8162,7 @@ msgstr "不支援 MPEG mpeg_version: 0x%|1$02x| 於資料套件 %2% 時間碼 %3 msgid "Unsupported format" msgstr "不支援的格式" -#: src/input/r_matroska.cpp:1685 +#: src/input/r_matroska.cpp:1674 msgid "Unsupported track type for this track.\n" msgstr "不支援此軌道的軌道類型。\n" @@ -8205,7 +8204,7 @@ msgstr "使用者定義選項:" msgid "Using a NALU size length of 3 bytes might result in tracks that won't be decodable with certain AVC/h.264 codecs.\n" msgstr "使用 3 位元組的 NALU 長可能會導致某些 AVC/h.264 編解碼器無法解碼該軌道。\n" -#: src/merge/pr_generic.h:339 +#: src/merge/pr_generic.h:334 msgid "Using the demultiplexer for the format '%1%'.\n" msgstr "此格式「%1%」使用多工解訊器。\n" @@ -8214,7 +8213,7 @@ msgstr "此格式「%1%」使用多工解訊器。\n" msgid "Using the generic output module for track type '%1%'.\n" msgstr "軌道類型「%1%」使用一般輸出模組。\n" -#: src/merge/pr_generic.h:341 +#: src/merge/pr_generic.h:336 msgid "Using the output module for the format '%1%'.\n" msgstr "格式「%1%」使用此輸出模組。\n" @@ -8291,7 +8290,7 @@ msgstr "視訊顯示寬度" msgid "Video interlaced flag" msgstr "視訊交錯標記" -#: src/input/r_real.cpp:613 +#: src/input/r_real.cpp:610 #, boost-format msgid "Video packet assembly failed. Error code: %1% (%2%)\n" msgstr "視訊套件彙編失敗。錯誤碼: %1% (%2%)\n" @@ -8334,7 +8333,7 @@ msgid "VobButtons" msgstr "VobBtn 按鈕" #: src/input/r_vobsub.h:75 -#: src/output/p_vobsub.h:34 +#: src/output/p_vobsub.h:31 msgid "VobSub" msgstr "VobSub" @@ -8437,7 +8436,7 @@ msgstr "正在寫入 VobSub 索引檔「%1%」。\n" #: src/mmg/tabs/chapters.cpp:1677 msgid "Writing to the file failed. Typical reasons include the file being write-protected, locked by another process or you not having write permissions for the target directory." -msgstr "" +msgstr "寫入檔案失敗。常見的原因可能是檔案有寫入保護、其他程式鎖住該檔案或你沒有寫入檔案所在目錄的權限。" #: src/common/kate.cpp:59 #, boost-format @@ -8796,7 +8795,7 @@ msgstr "語言: %1%" msgid "length %1%, data: %2%" msgstr "長 %1%, 資料: %2%" -#: src/input/r_vobsub.cpp:229 +#: src/input/r_vobsub.cpp:230 #, boost-format msgid "line %1%: The 'delay' timestamp could not be parsed.\n" msgstr "第 %1% 行:「延遲」時間戳記無法解析。\n" @@ -8921,7 +8920,7 @@ msgid "matroska_reader: Track type was not found.\n" msgstr "matroska_reader: 軌道類型未找到。\n" #: src/input/r_matroska.cpp:1219 -#: src/input/r_matroska.cpp:1877 +#: src/input/r_matroska.cpp:1866 msgid "matroska_reader: caught exception\n" msgstr "matroska_reader: 發生異常\n" @@ -9085,7 +9084,7 @@ msgstr "mkvmerge 可以讀取並使用外部純文字檔中的時間碼。這是 msgid "mkvmerge does not distinguish between those two and simply counts the number of blocks." msgstr "mkvmerge 不會辨別這兩個和簡易的區塊數量。" -#: src/output/p_avc.cpp:104 +#: src/output/p_avc.cpp:105 #, boost-format msgid "" "mkvmerge encountered broken or unparsable data in this AVC/h.264 video track. Either your file is damaged (which mkvmerge cannot cope with yet) or this is a bug in mkvmerge itself. The error message was:\n" @@ -9108,7 +9107,7 @@ msgstr "mkvmerge 執行完畢,返回碼 %d。%s" msgid "mkvmerge has finished" msgstr "mkvmerge 已經執行完畢" -#: src/input/r_ogm.cpp:515 +#: src/input/r_ogm.cpp:514 msgid "mkvmerge has not been compiled with FLAC support but handling of this stream has been requested.\n" msgstr "mkvmerge 編譯時未包含 FLAC 支援,但收到了對此類媒體流的處理請求。\n" @@ -9176,7 +9175,7 @@ msgstr "如果沒有選擇任何項目 mmg 將會重設為預設值。" msgid "mono" msgstr "單視角" -#: src/input/r_mpeg_ps.cpp:1153 +#: src/input/r_mpeg_ps.cpp:1156 #, boost-format msgid "mpeg_ps_reader: Should not have happened #1. %1%" msgstr "mpeg_ps_reader: 不該發生 #1。 %1%" @@ -9232,7 +9231,7 @@ msgstr "無" msgid "normal" msgstr "一般" -#: src/input/r_ogm.cpp:484 +#: src/input/r_ogm.cpp:483 #, boost-format msgid "ogg_stream_init for stream number %1% failed. Will try to continue and ignore this stream.\n" msgstr "ogg_stream_init 對媒體流編號 %1% 失敗。將嘗試繼續並忽略此媒體流。\n" @@ -9301,12 +9300,12 @@ msgstr "像素高度: %1%" msgid "pixel width: %1%" msgstr "像素寬度: %1%" -#: src/merge/pr_generic.cpp:878 +#: src/merge/pr_generic.cpp:869 #, boost-format msgid "pr_generic.cpp/generic_packetizer_c::add_packet(): timecode < last_timecode (%1% < %2%). %3%\n" msgstr "pr_generic.cpp/generic_packetizer_c::add_packet(): timecode < last_timecode (%1% < %2%)。 %3%\n" -#: src/merge/pr_generic.cpp:1230 +#: src/merge/pr_generic.cpp:1221 #, boost-format msgid "pr_generic.cpp/generic_reader_c::demuxing_requested(): Invalid track type %1%." msgstr "pr_generic.cpp/generic_reader_c::demuxing_requested(): 無效軌道類型 %1%。" @@ -9415,7 +9414,7 @@ msgstr "字幕" msgid "subtitles" msgstr "字幕" -#: src/output/p_textsubs.h:37 +#: src/output/p_textsubs.h:36 msgid "text subtitles" msgstr "文字字幕" @@ -9454,7 +9453,7 @@ msgstr "und (未定)" #: src/info/mkvinfo.cpp:755 #: src/info/mkvinfo.cpp:933 #: src/input/r_matroska.cpp:95 -#: src/input/r_matroska.cpp:2234 +#: src/input/r_matroska.cpp:2223 #: src/input/r_mpeg_ps.cpp:1344 #: src/mmg/header_editor/value_page.cpp:150 #: src/mmg/mmg.cpp:64 @@ -9463,7 +9462,7 @@ msgstr "und (未定)" msgid "unknown" msgstr "未知" -#: src/input/r_matroska.cpp:2227 +#: src/input/r_matroska.cpp:2216 #, boost-format msgid "unknown, format tag 0x%|1$04x|" msgstr "不明的格式標識 0x%|1$04x|" @@ -9488,7 +9487,7 @@ msgstr "verify failed: chapters->CheckMandatory() 為 false。這不該發生。 msgid "video" msgstr "視訊" -#: src/input/r_vobsub.cpp:574 +#: src/input/r_vobsub.cpp:575 msgid "vobsub_reader: sub file read failure" msgstr "vobsub_reader: sub_file 讀取失敗" diff --git a/src/common/memory.h b/src/common/memory.h index 72df10f23..e3258e1cd 100644 --- a/src/common/memory.h +++ b/src/common/memory.h @@ -209,6 +209,11 @@ public: return memory_cptr(new memory_c(static_cast(safememdup(buffer, size)), size, true)); } + static inline memory_cptr + clone(std::string const &buffer) { + return clone(buffer.c_str(), buffer.length()); + } + private: struct counter { X *ptr; diff --git a/src/common/mpeg4_p10.cpp b/src/common/mpeg4_p10.cpp index 1aa7c0f95..c602642f3 100644 --- a/src/common/mpeg4_p10.cpp +++ b/src/common/mpeg4_p10.cpp @@ -764,24 +764,21 @@ mpeg4::p10::parse_pps(memory_cptr &buffer, This function searches a buffer containing the MPEG4 layer 10 (AVC) codec initialization for the pixel aspectc ratio. If it is found then the numerator and the denominator are returned, and the aspect ratio - information is removed from the buffer. The new buffer is returned - in the variable \c buffer, and the new size is returned in \c buffer_size. + information is removed from the buffer. The new buffer is returned. \param buffer The buffer containing the MPEG4 layer 10 codec data. - \param buffer_size The size of the buffer in bytes. \param par_num The numerator, if found, is stored in this variable. \param par_den The denominator, if found, is stored in this variable. - \return \c true if the pixel aspect ratio was found and \c false - otherwise. + \return The new buffer. If the pixel aspect ratio was not found + then both \c par_num and \c par_den are set to 0. */ -bool -mpeg4::p10::extract_par(uint8_t *&buffer, - size_t &buffer_size, +memory_cptr +mpeg4::p10::extract_par(memory_cptr const &buffer, uint32_t &par_num, uint32_t &par_den) { try { - auto avcc = avcc_c::unpack(memory_cptr{new memory_c{buffer, buffer_size, false}}); + auto avcc = avcc_c::unpack(buffer); auto new_avcc = avcc; par_num = 1; par_den = 1; @@ -812,25 +809,28 @@ mpeg4::p10::extract_par(uint8_t *&buffer, } auto packed_new_avcc = new_avcc.pack(); - if (packed_new_avcc) { - buffer_size = packed_new_avcc->get_size(); - buffer = packed_new_avcc->get_buffer(); - packed_new_avcc->lock(); + + if (!ar_found) { + par_num = 0; + par_den = 0; } - return ar_found; + return packed_new_avcc; } catch(...) { - return false; + par_num = 0; + par_den = 0; + + return buffer; } } -void -mpeg4::p10::fix_sps_fps(uint8_t *&buffer, - size_t &buffer_size, +memory_cptr +mpeg4::p10::fix_sps_fps(memory_cptr const &buffer, int64_t duration) { try { - mm_mem_io_c avcc(buffer, buffer_size), new_avcc(nullptr, buffer_size, 1024); + auto buffer_size = buffer->get_size(); + mm_mem_io_c avcc(buffer->get_buffer(), buffer->get_size()), new_avcc(nullptr, buffer_size, 1024); memory_cptr nalu(new memory_c()); avcc.read(nalu, 5); @@ -867,10 +867,10 @@ mpeg4::p10::fix_sps_fps(uint8_t *&buffer, new_avcc.write(nalu); } - buffer_size = new_avcc.getFilePointer(); - buffer = new_avcc.get_and_lock_buffer(); + return memory_cptr{new memory_c{new_avcc.get_and_lock_buffer(), new_avcc.getFilePointer()}}; } catch(...) { + return memory_cptr{}; } } diff --git a/src/common/mpeg4_p10.h b/src/common/mpeg4_p10.h index 92369d4cc..8d45efe90 100644 --- a/src/common/mpeg4_p10.h +++ b/src/common/mpeg4_p10.h @@ -142,8 +142,8 @@ void rbsp_to_nalu(memory_cptr &buffer); bool parse_sps(memory_cptr &buffer, sps_info_t &sps, bool keep_ar_info = false, bool fix_bitstream_frame_rate = false, int64_t duration = -1); bool parse_pps(memory_cptr &buffer, pps_info_t &pps); -bool extract_par(uint8_t *&buffer, size_t &buffer_size, uint32_t &par_num, uint32_t &par_den); -void fix_sps_fps(uint8_t *&buffer, size_t &buffer_size, int64_t duration); +memory_cptr extract_par(memory_cptr const &buffer, uint32_t &par_num, uint32_t &par_den); +memory_cptr fix_sps_fps(memory_cptr const &buffer, int64_t duration); bool is_avc_fourcc(const char *fourcc); memory_cptr avcc_to_nalus(const unsigned char *buffer, size_t size); diff --git a/src/common/mpeg4_p2.cpp b/src/common/mpeg4_p2.cpp index 9d912fda0..7426e7efb 100644 --- a/src/common/mpeg4_p2.cpp +++ b/src/common/mpeg4_p2.cpp @@ -342,7 +342,7 @@ mpeg4::p2::find_frame_types(const unsigned char *buffer, \return \c nullptr if no configuration data was found and a pointer to a memory_c object otherwise. This object has to be deleted manually. */ -memory_c * +memory_cptr mpeg4::p2::parse_config_data(const unsigned char *buffer, int buffer_size, mpeg4::p2::config_data_t &config_data) { @@ -389,16 +389,16 @@ mpeg4::p2::parse_config_data(const unsigned char *buffer, } catch (...) { } - memory_c *mem; + memory_cptr mem; if (-1 == vos_offset) { - mem = new memory_c((unsigned char *)safemalloc(size + 5), size + 5, true); + mem = memory_c::alloc(size + 5); unsigned char *dst = mem->get_buffer(); put_uint32_be(dst, MPEGVIDEO_VOS_START_CODE); dst[4] = 0xf5; memcpy(dst + 5, buffer, size); } else { - mem = new memory_c((unsigned char *)safemalloc(size), size, true); + mem = memory_c::alloc(size); unsigned char *dst = mem->get_buffer(); put_uint32_be(dst, MPEGVIDEO_VOS_START_CODE); if (3 >= buffer[vos_offset + 4]) diff --git a/src/common/mpeg4_p2.h b/src/common/mpeg4_p2.h index 6034ab4d2..2f834d24e 100644 --- a/src/common/mpeg4_p2.h +++ b/src/common/mpeg4_p2.h @@ -132,7 +132,7 @@ namespace mpeg4 { bool extract_par(const unsigned char *buffer, int buffer_size, uint32_t &par_num, uint32_t &par_den); bool extract_size(const unsigned char *buffer, int buffer_size, uint32_t &width, uint32_t &height); void find_frame_types(const unsigned char *buffer, int buffer_size, std::vector &frames, const config_data_t &config_data); - memory_c * parse_config_data(const unsigned char *buffer, int buffer_size, config_data_t &config_data); + memory_cptr parse_config_data(const unsigned char *buffer, int buffer_size, config_data_t &config_data); }; }; diff --git a/src/input/r_avi.cpp b/src/input/r_avi.cpp index 7b6921f80..625afb43e 100644 --- a/src/input/r_avi.cpp +++ b/src/input/r_avi.cpp @@ -32,6 +32,7 @@ #include "common/mpeg1_2.h" #include "common/mpeg4_p2.h" #include "common/mpeg4_p10.h" +#include "common/strings/formatting.h" #include "input/r_avi.h" #include "input/subtitles.h" #include "merge/output_control.h" @@ -123,8 +124,6 @@ avi_reader_c::~avi_reader_c() { if (m_avi) AVI_close(m_avi); - m_ti.m_private_data = nullptr; - mxverb(2, boost::format("avi_reader_c: Dropped video frames: %1%\n") % m_dropped_video_frames); } @@ -204,6 +203,8 @@ avi_reader_c::parse_subtitle_chunks() { void avi_reader_c::create_packetizer(int64_t tid) { + m_ti.m_private_data.reset(); + if ((0 == tid) && demuxing_requested('v', 0) && (-1 == m_vptzr) && m_video_track_ok) create_video_packetizer(); @@ -222,16 +223,13 @@ avi_reader_c::create_video_packetizer() { mxverb(4, boost::format(" %1%: %2%\n") % i % AVI_frame_size(m_avi, i)); } - m_ti.m_private_data = reinterpret_cast(m_avi->bitmap_info_header); - if (m_ti.m_private_data) - m_ti.m_private_size = get_uint32_le(&m_avi->bitmap_info_header->bi_size); + if (m_avi->bitmap_info_header) { + m_ti.m_private_data = memory_c::clone(m_avi->bitmap_info_header, get_uint32_le(&m_avi->bitmap_info_header->bi_size)); - mxverb(4, boost::format("track extra data size: %1%\n") % (m_ti.m_private_size - sizeof(alBITMAPINFOHEADER))); - if (sizeof(alBITMAPINFOHEADER) < m_ti.m_private_size) { - mxverb(4, " "); - for (i = sizeof(alBITMAPINFOHEADER); i < m_ti.m_private_size; ++i) - mxverb(4, boost::format("%|1$02x| ") % m_ti.m_private_data[i]); - mxverb(4, "\n"); + mxverb(4, boost::format("track extra data size: %1%\n") % (m_ti.m_private_data->get_size() - sizeof(alBITMAPINFOHEADER))); + + if (sizeof(alBITMAPINFOHEADER) < m_ti.m_private_data->get_size()) + mxverb(4, boost::format(" %1%\n") % to_hex(m_ti.m_private_data->get_buffer() + sizeof(alBITMAPINFOHEADER), m_ti.m_private_data->get_size() - sizeof(alBITMAPINFOHEADER))); } const char *codec = AVI_video_compressor(m_avi); @@ -268,8 +266,8 @@ avi_reader_c::create_mpeg1_2_packetizer() { std::shared_ptr m2v_parser(new M2VParser); m2v_parser->SetProbeMode(); - if ((0 != m_ti.m_private_size) && (m_ti.m_private_size < sizeof(alBITMAPINFOHEADER))) - m2v_parser->WriteData(m_ti.m_private_data + sizeof(alBITMAPINFOHEADER), m_ti.m_private_size - sizeof(alBITMAPINFOHEADER)); + if (m_ti.m_private_data && (m_ti.m_private_data->get_size() < sizeof(alBITMAPINFOHEADER))) + m2v_parser->WriteData(m_ti.m_private_data->get_buffer() + sizeof(alBITMAPINFOHEADER), m_ti.m_private_data->get_size() - sizeof(alBITMAPINFOHEADER)); unsigned int frame_number = 0; unsigned int state = m2v_parser->GetState(); @@ -307,13 +305,10 @@ avi_reader_c::create_mpeg1_2_packetizer() { int display_width = ((0 >= seq_hdr.aspectRatio) || (1 == seq_hdr.aspectRatio)) ? seq_hdr.width : static_cast(seq_hdr.height * seq_hdr.aspectRatio); MPEGChunk *raw_seq_hdr = m2v_parser->GetRealSequenceHeader(); - if (raw_seq_hdr) { - m_ti.m_private_data = raw_seq_hdr->GetPointer(); - m_ti.m_private_size = raw_seq_hdr->GetSize(); - } else { - m_ti.m_private_data = nullptr; - m_ti.m_private_size = 0; - } + if (raw_seq_hdr) + m_ti.m_private_data = memory_c::clone(raw_seq_hdr->GetPointer(), raw_seq_hdr->GetSize()); + else + m_ti.m_private_data.reset(); m_vptzr = add_packetizer(new mpeg1_2_video_packetizer_c(this, m_ti, m2v_parser->GetMPEGVersion(), seq_hdr.frameOrFieldRate, seq_hdr.width, seq_hdr.height, display_width, seq_hdr.height, false)); @@ -357,9 +352,8 @@ avi_reader_c::create_mpeg4_p10_packetizer() { void avi_reader_c::create_vp8_packetizer() { - m_ti.m_private_data = nullptr; - m_ti.m_private_size = 0; - m_vptzr = add_packetizer(new vp8_video_packetizer_c(this, m_ti)); + m_ti.m_private_data.reset(); + m_vptzr = add_packetizer(new vp8_video_packetizer_c(this, m_ti)); PTZR(m_vptzr)->set_track_default_duration(1000000000ll / m_fps); PTZR(m_vptzr)->set_video_pixel_width(AVI_video_width(m_avi)); @@ -393,6 +387,7 @@ avi_reader_c::create_subs_packetizer(int idx) { if (!demuxing_requested('s', 1 + AVI_audio_tracks(m_avi) + idx)) return; + m_ti.m_private_data.reset(); avi_subs_demuxer_t &demuxer = m_subtitle_demuxers[idx]; demuxer.m_text_io = mm_text_io_cptr(new mm_text_io_c(new mm_mem_io_c(demuxer.m_subtitles->get_buffer(), demuxer.m_subtitles->get_size()))); @@ -415,7 +410,7 @@ avi_reader_c::create_srt_packetizer(int idx) { parser->parse(); bool is_utf8 = demuxer.m_text_io->get_byte_order() != BO_NONE; - demuxer.m_ptzr = add_packetizer(new textsubs_packetizer_c(this, m_ti, MKV_S_TEXTUTF8, nullptr, 0, true, is_utf8)); + demuxer.m_ptzr = add_packetizer(new textsubs_packetizer_c(this, m_ti, MKV_S_TEXTUTF8, true, is_utf8)); show_packetizer_info(id, PTZR(demuxer.m_ptzr)); } @@ -437,8 +432,8 @@ avi_reader_c::create_ssa_packetizer(int idx) { parser->set_attachment_id_base(g_attachments.size()); parser->parse(); - std::string global = parser->get_global(); - demuxer.m_ptzr = add_packetizer(new textsubs_packetizer_c(this, m_ti, parser->is_ass() ? MKV_S_TEXTASS : MKV_S_TEXTSSA, global.c_str(), global.length(), false, false)); + m_ti.m_private_data = memory_c::clone(parser->get_global()); + demuxer.m_ptzr = add_packetizer(new textsubs_packetizer_c(this, m_ti, parser->is_ass() ? MKV_S_TEXTASS : MKV_S_TEXTSSA, false, false)); show_packetizer_info(id, PTZR(demuxer.m_ptzr)); } @@ -477,13 +472,11 @@ avi_reader_c::add_audio_demuxer(int aid) { alWAVEFORMATEXTENSIBLE *ext = reinterpret_cast(wfe); audio_format = get_uint32_le(&ext->extension.guid.data1); - } else if (get_uint16_le(&wfe->cb_size) > 0) { - m_ti.m_private_data = reinterpret_cast(wfe + 1); - m_ti.m_private_size = get_uint16_le(&wfe->cb_size); - } else { - m_ti.m_private_data = nullptr; - m_ti.m_private_size = 0; - } + } else if (get_uint16_le(&wfe->cb_size) > 0) + m_ti.m_private_data = memory_c::clone(wfe + 1, get_uint16_le(&wfe->cb_size)); + + else + m_ti.m_private_data.reset(); switch(audio_format) { case 0x0001: // raw PCM audio @@ -537,9 +530,9 @@ avi_reader_c::create_aac_packetizer(int aid, bool aac_data_created = false; bool headerless = (AVI_audio_format(m_avi) != 0x706d); - if ((0 == m_ti.m_private_size) + if (!m_ti.m_private_data || ( (0x706d == AVI_audio_format(m_avi)) - && ((sizeof(alWAVEFORMATEX) + 7) < m_ti.m_private_size))) { + && ((sizeof(alWAVEFORMATEX) + 7) < m_ti.m_private_data->get_size()))) { aac_data_created = true; channels = AVI_audio_channels(m_avi); sample_rate = AVI_audio_rate(m_avi); @@ -554,12 +547,11 @@ avi_reader_c::create_aac_packetizer(int aid, } unsigned char created_aac_data[AAC_MAX_PRIVATE_DATA_SIZE]; - - m_ti.m_private_size = create_aac_data(created_aac_data, profile, channels, sample_rate, output_sample_rate, is_sbr); - m_ti.m_private_data = created_aac_data; + auto size = create_aac_data(created_aac_data, profile, channels, sample_rate, output_sample_rate, is_sbr); + m_ti.m_private_data = memory_c::clone(created_aac_data, size); } else { - if (!parse_aac_data(m_ti.m_private_data, m_ti.m_private_size, profile, channels, sample_rate, output_sample_rate, is_sbr)) + if (!parse_aac_data(m_ti.m_private_data->get_buffer(), m_ti.m_private_data->get_size(), profile, channels, sample_rate, output_sample_rate, is_sbr)) mxerror_tid(m_ti.m_fname, aid + 1, Y("This AAC track does not contain valid headers. Could not parse the AAC information.\n")); if (is_sbr) @@ -574,11 +566,6 @@ avi_reader_c::create_aac_packetizer(int aid, if (is_sbr) packetizer->set_audio_output_sampling_freq(output_sample_rate); - if (aac_data_created) { - m_ti.m_private_size = 0; - m_ti.m_private_data = nullptr; - } - return packetizer; } @@ -625,16 +612,16 @@ avi_reader_c::create_dts_packetizer(int aid) { generic_packetizer_c * avi_reader_c::create_vorbis_packetizer(int aid) { try { - if (!m_ti.m_private_data || !m_ti.m_private_size) + if (m_ti.m_private_data) throw mtx::input::extended_x(Y("Invalid Vorbis headers in AVI audio track.")); - unsigned char *c = m_ti.m_private_data; + auto c = m_ti.m_private_data->get_buffer(); if (2 != c[0]) throw mtx::input::extended_x(Y("Invalid Vorbis headers in AVI audio track.")); int offset = 1; - const int laced_size = m_ti.m_private_size; + const int laced_size = m_ti.m_private_data->get_size(); int i; int header_sizes[3]; @@ -660,8 +647,7 @@ avi_reader_c::create_vorbis_packetizer(int aid) { headers[2] = &c[offset + header_sizes[0] + header_sizes[1]]; header_sizes[2] = laced_size - offset - header_sizes[0] - header_sizes[1]; - m_ti.m_private_data = nullptr; - m_ti.m_private_size = 0; + m_ti.m_private_data.reset(); return new vorbis_packetizer_c(this, m_ti, headers[0], header_sizes[0], headers[1], header_sizes[1], headers[2], header_sizes[2]); diff --git a/src/input/r_flv.cpp b/src/input/r_flv.cpp index fd236ddf0..52214b7e7 100755 --- a/src/input/r_flv.cpp +++ b/src/input/r_flv.cpp @@ -311,6 +311,7 @@ flv_reader_c::create_packetizer(int64_t id) { return; m_ti.m_id = id; + m_ti.m_private_data.reset(); if (track->m_fourcc.equiv("AVC1")) create_v_avc_packetizer(track); @@ -327,15 +328,9 @@ flv_reader_c::create_packetizer(int64_t id) { void flv_reader_c::create_v_avc_packetizer(flv_track_cptr &track) { - if (track->m_private_data) { - m_ti.m_private_data = track->m_private_data->get_buffer(); - m_ti.m_private_size = track->m_private_data->get_size(); - } - - track->m_ptzr = add_packetizer(new mpeg4_p10_video_packetizer_c(this, m_ti, track->m_v_frame_rate, track->m_v_width, track->m_v_height)); + m_ti.m_private_data = track->m_private_data; + track->m_ptzr = add_packetizer(new mpeg4_p10_video_packetizer_c(this, m_ti, track->m_v_frame_rate, track->m_v_width, track->m_v_height)); show_packetizer_info(m_video_track_idx, PTZR(track->m_ptzr)); - - m_ti.m_private_data = NULL; } void @@ -351,13 +346,10 @@ flv_reader_c::create_v_generic_packetizer(flv_track_cptr &track) { put_uint32_le(&bih.bi_size_image, track->m_v_width * track->m_v_height * 3); track->m_fourcc.write(reinterpret_cast(&bih.bi_compression)); - m_ti.m_private_data = reinterpret_cast(&bih); - m_ti.m_private_size = sizeof(bih); + m_ti.m_private_data = memory_c::clone(&bih, sizeof(bih)); track->m_ptzr = add_packetizer(new video_packetizer_c(this, m_ti, MKV_V_MSCOMP, track->m_v_frame_rate, track->m_v_width, track->m_v_height)); show_packetizer_info(m_video_track_idx, PTZR(track->m_ptzr)); - - m_ti.m_private_data = NULL; } void diff --git a/src/input/r_matroska.cpp b/src/input/r_matroska.cpp index 213089352..b49e6598d 100644 --- a/src/input/r_matroska.cpp +++ b/src/input/r_matroska.cpp @@ -1261,7 +1261,7 @@ kax_reader_c::init_passthrough_packetizer(kax_track_t *t) { ptzr->set_track_type(MAP_TRACK_TYPE(t->type)); ptzr->set_codec_id(t->codec_id); - ptzr->set_codec_private(static_cast(t->private_data), t->private_size); + ptzr->set_codec_private(memory_c::clone(t->private_data, t->private_size)); if (0.0 < t->v_frate) ptzr->set_track_default_duration(1000000000.0 / t->v_frate); @@ -1469,9 +1469,7 @@ kax_reader_c::create_dts_audio_packetizer(kax_track_t *t, void kax_reader_c::create_flac_audio_packetizer(kax_track_t *t, track_info_c &nti) { - safefree(nti.m_private_data); - nti.m_private_data = nullptr; - nti.m_private_size = 0; + nti.m_private_data.reset(); if (FOURCC('f', 'L', 'a', 'C') == t->a_formattag) set_track_packetizer(t, new flac_packetizer_c(this, nti, static_cast(t->private_data), t->private_size)); @@ -1493,7 +1491,7 @@ kax_reader_c::create_mp3_audio_packetizer(kax_track_t *t, void kax_reader_c::create_opus_audio_packetizer(kax_track_t *t, track_info_c &nti) { - set_track_packetizer(t, new opus_packetizer_c(this, nti, memory_c::clone(t->private_data, t->private_size))); + set_track_packetizer(t, new opus_packetizer_c(this, nti)); show_packetizer_info(t->tnum, t->ptzr_ptr); } @@ -1507,10 +1505,7 @@ kax_reader_c::create_pcm_audio_packetizer(kax_track_t *t, void kax_reader_c::create_tta_audio_packetizer(kax_track_t *t, track_info_c &nti) { - safefree(nti.m_private_data); - nti.m_private_data = nullptr; - nti.m_private_size = 0; - + nti.m_private_data.reset(); set_track_packetizer(t, new tta_packetizer_c(this, nti, t->a_channels, t->a_bps, t->a_sfreq)); show_packetizer_info(t->tnum, t->ptzr_ptr); } @@ -1525,11 +1520,9 @@ kax_reader_c::create_vorbis_audio_packetizer(kax_track_t *t, void kax_reader_c::create_wavpack_audio_packetizer(kax_track_t *t, track_info_c &nti) { + nti.m_private_data.reset(); + wavpack_meta_t meta; - - nti.m_private_data = static_cast(t->private_data); - nti.m_private_size = t->private_size; - meta.bits_per_sample = t->a_bps; meta.channel_count = t->a_channels; meta.sample_rate = t->a_sfreq; @@ -1539,8 +1532,6 @@ kax_reader_c::create_wavpack_audio_packetizer(kax_track_t *t, meta.samples_per_block = t->a_sfreq / t->v_frate; set_track_packetizer(t, new wavpack_packetizer_c(this, nti, meta)); - nti.m_private_data = nullptr; - nti.m_private_size = 0; show_packetizer_info(t->tnum, t->ptzr_ptr); } @@ -1594,7 +1585,7 @@ void kax_reader_c::create_subtitle_packetizer(kax_track_t *t, track_info_c &nti) { if (t->codec_id == MKV_S_VOBSUB) { - set_track_packetizer(t, new vobsub_packetizer_c(this, t->private_data, t->private_size, nti)); + set_track_packetizer(t, new vobsub_packetizer_c(this, nti)); show_packetizer_info(t->tnum, t->ptzr_ptr); t->sub_type = 'v'; @@ -1602,13 +1593,13 @@ kax_reader_c::create_subtitle_packetizer(kax_track_t *t, } else if (balg::starts_with(t->codec_id, "S_TEXT") || (t->codec_id == "S_SSA") || (t->codec_id == "S_ASS")) { std::string new_codec_id = ((t->codec_id == "S_SSA") || (t->codec_id == "S_ASS")) ? std::string("S_TEXT/") + std::string(&t->codec_id[2]) : t->codec_id; - set_track_packetizer(t, new textsubs_packetizer_c(this, nti, new_codec_id.c_str(), t->private_data, t->private_size, false, true)); + set_track_packetizer(t, new textsubs_packetizer_c(this, nti, new_codec_id.c_str(), false, true)); show_packetizer_info(t->tnum, t->ptzr_ptr); t->sub_type = 't'; } else if (t->codec_id == MKV_S_KATE) { - set_track_packetizer(t, new kate_packetizer_c(this, nti, t->private_data, t->private_size)); + set_track_packetizer(t, new kate_packetizer_c(this, nti)); show_packetizer_info(t->tnum, t->ptzr_ptr); t->sub_type = 'k'; @@ -1625,17 +1616,16 @@ kax_reader_c::create_subtitle_packetizer(kax_track_t *t, void kax_reader_c::create_button_packetizer(kax_track_t *t, track_info_c &nti) { - if (t->codec_id == MKV_B_VOBBTN) { - safefree(nti.m_private_data); - nti.m_private_data = nullptr; - nti.m_private_size = 0; - t->sub_type = 'b'; - - set_track_packetizer(t, new vobbtn_packetizer_c(this, nti, t->v_width, t->v_height)); - show_packetizer_info(t->tnum, t->ptzr_ptr); - - } else + if (t->codec_id != MKV_B_VOBBTN) { init_passthrough_packetizer(t); + return; + } + + nti.m_private_data.reset(); + t->sub_type = 'b'; + + set_track_packetizer(t, new vobbtn_packetizer_c(this, nti, t->v_width, t->v_height)); + show_packetizer_info(t->tnum, t->ptzr_ptr); } void @@ -1646,8 +1636,7 @@ kax_reader_c::create_packetizer(int64_t tid) { return; track_info_c nti(m_ti); - nti.m_private_data = safememdup(t->private_data, t->private_size); - nti.m_private_size = t->private_size; + nti.m_private_data = memory_c::clone(t->private_data, t->private_size); nti.m_id = t->tnum; // ID for this track. if (nti.m_language == "") @@ -1715,7 +1704,7 @@ kax_reader_c::create_mpeg4_p10_es_video_packetizer(kax_track_t *t, void kax_reader_c::create_mpeg4_p10_video_packetizer(kax_track_t *t, track_info_c &nti) { - if ((0 == nti.m_private_size) || !nti.m_private_data) { + if (!nti.m_private_data || !nti.m_private_data->get_size()) { // avc_es_parser_cptr parser = parse_first_mpeg4_p10_frame(t, nti); create_mpeg4_p10_es_video_packetizer(t, nti); return; diff --git a/src/input/r_mpeg_es.cpp b/src/input/r_mpeg_es.cpp index 3859a3cd2..174f5d0d9 100644 --- a/src/input/r_mpeg_es.cpp +++ b/src/input/r_mpeg_es.cpp @@ -150,10 +150,10 @@ mpeg_es_reader_c::read_headers() { dheight = height; MPEGChunk *raw_seq_hdr = parser.GetRealSequenceHeader(); - if (raw_seq_hdr) { - m_ti.m_private_data = (unsigned char *)safememdup(raw_seq_hdr->GetPointer(), raw_seq_hdr->GetSize()); - m_ti.m_private_size = raw_seq_hdr->GetSize(); - } + if (raw_seq_hdr) + m_ti.m_private_data = memory_c::clone(raw_seq_hdr->GetPointer(), raw_seq_hdr->GetSize()); + else + m_ti.m_private_data.reset(); mxverb(2, boost::format("mpeg_es_reader: version %1% width %2% height %3% FPS %4% AR %5%\n") % version % width % height % frame_rate % aspect_ratio); diff --git a/src/input/r_mpeg_ps.cpp b/src/input/r_mpeg_ps.cpp index f775d9ab9..723259f84 100644 --- a/src/input/r_mpeg_ps.cpp +++ b/src/input/r_mpeg_ps.cpp @@ -1128,8 +1128,11 @@ mpeg_ps_reader_c::create_packetizer(int64_t id) { if (!demuxing_requested(tracks[id]->type, id)) return; + m_ti.m_private_data.reset(); m_ti.m_id = id; - mpeg_ps_track_ptr &track = tracks[id]; + + auto &track = tracks[id]; + if ('a' == track->type) { if ( (FOURCC('M', 'P', '1', ' ') == track->fourcc) || (FOURCC('M', 'P', '2', ' ') == track->fourcc) @@ -1157,15 +1160,12 @@ mpeg_ps_reader_c::create_packetizer(int64_t id) { || (FOURCC('M', 'P', 'G', '2') == track->fourcc)) { generic_packetizer_c *m2vpacketizer; - m_ti.m_private_data = track->raw_seq_hdr; - m_ti.m_private_size = track->raw_seq_hdr_size; + m_ti.m_private_data = memory_c::clone(track->raw_seq_hdr, track->raw_seq_hdr_size); m2vpacketizer = new mpeg1_2_video_packetizer_c(this, m_ti, track->v_version, track->v_frame_rate, track->v_width, track->v_height, track->v_dwidth, track->v_dheight, false); track->ptzr = add_packetizer(m2vpacketizer); show_packetizer_info(id, PTZR(track->ptzr)); m2vpacketizer->set_video_interlaced_flag(track->v_interlaced); - m_ti.m_private_data = nullptr; - m_ti.m_private_size = 0; } else if (track->fourcc == FOURCC('A', 'V', 'C', '1')) { track->ptzr = add_packetizer(new mpeg4_p10_es_video_packetizer_c(this, m_ti)); diff --git a/src/input/r_mpeg_ts.cpp b/src/input/r_mpeg_ts.cpp index 6524524e1..579e6946a 100644 --- a/src/input/r_mpeg_ts.cpp +++ b/src/input/r_mpeg_ts.cpp @@ -1149,21 +1149,11 @@ mpeg_ts_reader_c::create_packetizer(int64_t id) { void mpeg_ts_reader_c::create_mpeg1_2_video_packetizer(mpeg_ts_track_ptr &track) { + m_ti.m_private_data = track->raw_seq_hdr; + auto m2vpacketizer = new mpeg1_2_video_packetizer_c(this, m_ti, track->v_version, track->v_frame_rate, track->v_width, track->v_height, track->v_dwidth, track->v_dheight, false); + track->ptzr = add_packetizer(m2vpacketizer); - if (track->raw_seq_hdr && (0 < track->raw_seq_hdr->get_size())) { - m_ti.m_private_data = track->raw_seq_hdr->get_buffer(); - m_ti.m_private_size = track->raw_seq_hdr->get_size(); - } else { - m_ti.m_private_data = nullptr; - m_ti.m_private_size = 0; - } - - generic_packetizer_c *m2vpacketizer = new mpeg1_2_video_packetizer_c(this, m_ti, track->v_version, track->v_frame_rate, track->v_width, track->v_height, - track->v_dwidth, track->v_dheight, false); - track->ptzr = add_packetizer(m2vpacketizer); show_packetizer_info(m_ti.m_id, PTZR(track->ptzr)); - m_ti.m_private_data = nullptr; - m_ti.m_private_size = 0; m2vpacketizer->set_video_interlaced_flag(track->v_interlaced); } diff --git a/src/input/r_ogm.cpp b/src/input/r_ogm.cpp index 96c62f9e1..af6b86593 100644 --- a/src/input/r_ogm.cpp +++ b/src/input/r_ogm.cpp @@ -420,8 +420,7 @@ ogm_reader_c::create_packetizer(int64_t tid) { if (!dmx->in_use) return; - m_ti.m_private_data = nullptr; - m_ti.m_private_size = 0; + m_ti.m_private_data.reset(); m_ti.m_id = tid; m_ti.m_language = dmx->language; m_ti.m_track_name = dmx->title; @@ -1104,7 +1103,8 @@ ogm_a_opus_demuxer_c::ogm_a_opus_demuxer_c(ogm_reader_c *p_reader) generic_packetizer_c * ogm_a_opus_demuxer_c::create_packetizer() { - auto ptzr_obj = new opus_packetizer_c(reader, m_ti, packet_data[0]); + m_ti.m_private_data = packet_data[0]; + auto ptzr_obj = new opus_packetizer_c(reader, m_ti); show_packetizer_info(m_ti.m_id, ptzr_obj); @@ -1135,7 +1135,7 @@ ogm_s_text_demuxer_c::ogm_s_text_demuxer_c(ogm_reader_c *p_reader) generic_packetizer_c * ogm_s_text_demuxer_c::create_packetizer() { - generic_packetizer_c *ptzr_obj = new textsubs_packetizer_c(reader, m_ti, MKV_S_TEXTUTF8, nullptr, 0, true, false); + generic_packetizer_c *ptzr_obj = new textsubs_packetizer_c(reader, m_ti, MKV_S_TEXTUTF8, true, false); show_packetizer_info(m_ti.m_id, ptzr_obj); @@ -1177,9 +1177,6 @@ ogm_v_avc_demuxer_c::ogm_v_avc_demuxer_c(ogm_reader_c *p_reader) generic_packetizer_c * ogm_v_avc_demuxer_c::create_packetizer() { stream_header *sth = (stream_header *)&packet_data[0]->get_buffer()[1]; - - m_ti.m_private_data = nullptr; - m_ti.m_private_size = 0; generic_packetizer_c *vptzr = new mpeg4_p10_es_video_packetizer_c(reader, m_ti); vptzr->set_video_pixel_dimensions(get_uint32_le(&sth->sh.video.width), get_uint32_le(&sth->sh.video.height)); @@ -1235,8 +1232,7 @@ ogm_v_mscomp_demuxer_c::create_packetizer() { put_uint32_le(&bih.bi_size_image, get_uint32_le(&bih.bi_width) * get_uint32_le(&bih.bi_height) * 3); memcpy(&bih.bi_compression, sth->subtype, 4); - m_ti.m_private_data = (unsigned char *)&bih; - m_ti.m_private_size = sizeof(alBITMAPINFOHEADER); + m_ti.m_private_data = memory_c::clone(&bih, sizeof(alBITMAPINFOHEADER)); double fps = (double)10000000.0 / get_uint64_le(&sth->time_unit); int width = get_uint32_le(&sth->sh.video.width); @@ -1250,8 +1246,6 @@ ogm_v_mscomp_demuxer_c::create_packetizer() { show_packetizer_info(m_ti.m_id, ptzr_obj); - m_ti.m_private_data = nullptr; - return ptzr_obj; } @@ -1328,17 +1322,13 @@ ogm_v_theora_demuxer_c::initialize() { generic_packetizer_c * ogm_v_theora_demuxer_c::create_packetizer() { - memory_cptr codecprivate = lace_memory_xiph(packet_data); - m_ti.m_private_data = codecprivate->get_buffer(); - m_ti.m_private_size = codecprivate->get_size(); + m_ti.m_private_data = lace_memory_xiph(packet_data); double fps = (double)theora.frn / (double)theora.frd; generic_packetizer_c *ptzr_obj = new theora_video_packetizer_c(reader, m_ti, fps, theora.fmbw, theora.fmbh); show_packetizer_info(m_ti.m_id, ptzr_obj); - m_ti.m_private_data = nullptr; - return ptzr_obj; } @@ -1498,16 +1488,11 @@ ogm_s_kate_demuxer_c::initialize() { generic_packetizer_c * ogm_s_kate_demuxer_c::create_packetizer() { - memory_cptr codecprivate = lace_memory_xiph(packet_data); - m_ti.m_private_data = codecprivate->get_buffer(); - m_ti.m_private_size = codecprivate->get_size(); - - generic_packetizer_c *ptzr_obj = new kate_packetizer_c(reader, m_ti, m_ti.m_private_data, m_ti.m_private_size); + m_ti.m_private_data = lace_memory_xiph(packet_data); + auto ptzr_obj = new kate_packetizer_c(reader, m_ti); show_packetizer_info(m_ti.m_id, ptzr_obj); - m_ti.m_private_data = nullptr; - return ptzr_obj; } diff --git a/src/input/r_qtmp4.cpp b/src/input/r_qtmp4.cpp index 874a4c152..a5c09e432 100644 --- a/src/input/r_qtmp4.cpp +++ b/src/input/r_qtmp4.cpp @@ -155,7 +155,6 @@ qtmp4_reader_c::read_headers() { } qtmp4_reader_c::~qtmp4_reader_c() { - m_ti.m_private_data = nullptr; } qt_atom_t @@ -1229,25 +1228,16 @@ qtmp4_reader_c::create_audio_packetizer_alac(qtmp4_demuxer_cptr &dmx) { void qtmp4_reader_c::create_video_packetizer_svq1(qtmp4_demuxer_cptr &dmx) { - memory_cptr bih(create_bitmap_info_header(dmx, "SVQ1")); - - m_ti.m_private_size = bih->get_size(); - m_ti.m_private_data = (unsigned char *)bih->get_buffer(); - - dmx->ptzr = add_packetizer(new video_packetizer_c(this, m_ti, MKV_V_MSCOMP, 0.0, dmx->v_width, dmx->v_height)); - m_ti.m_private_data = nullptr; + m_ti.m_private_data = create_bitmap_info_header(dmx, "SVQ1"); + dmx->ptzr = add_packetizer(new video_packetizer_c(this, m_ti, MKV_V_MSCOMP, 0.0, dmx->v_width, dmx->v_height)); show_packetizer_info(dmx->id, PTZR(dmx->ptzr)); } void qtmp4_reader_c::create_video_packetizer_mpeg4_p2(qtmp4_demuxer_cptr &dmx) { - memory_cptr bih(create_bitmap_info_header(dmx, "DIVX")); - - m_ti.m_private_size = bih->get_size(); - m_ti.m_private_data = (unsigned char *)bih->get_buffer(); - dmx->ptzr = add_packetizer(new mpeg4_p2_video_packetizer_c(this, m_ti, 0.0, dmx->v_width, dmx->v_height, false)); - m_ti.m_private_data = nullptr; + m_ti.m_private_data = create_bitmap_info_header(dmx, "DIVX"); + dmx->ptzr = add_packetizer(new mpeg4_p2_video_packetizer_c(this, m_ti, 0.0, dmx->v_width, dmx->v_height, false)); show_packetizer_info(dmx->id, PTZR(dmx->ptzr)); } @@ -1270,34 +1260,24 @@ qtmp4_reader_c::create_video_packetizer_mpeg4_p10(qtmp4_demuxer_cptr &dmx) { "As it is missing the timecodes for this track might be wrong. " "You should watch the resulting file and make sure that it looks like you expected it to.\n")); - m_ti.m_private_size = dmx->priv->get_size(); - m_ti.m_private_data = dmx->priv->get_buffer(); - dmx->ptzr = add_packetizer(new mpeg4_p10_video_packetizer_c(this, m_ti, dmx->fps, dmx->v_width, dmx->v_height)); - m_ti.m_private_data = nullptr; + m_ti.m_private_data = dmx->priv; + dmx->ptzr = add_packetizer(new mpeg4_p10_video_packetizer_c(this, m_ti, dmx->fps, dmx->v_width, dmx->v_height)); show_packetizer_info(dmx->id, PTZR(dmx->ptzr)); } void qtmp4_reader_c::create_video_packetizer_standard(qtmp4_demuxer_cptr &dmx) { - m_ti.m_private_size = dmx->stsd->get_size(); - m_ti.m_private_data = dmx->stsd->get_buffer(); + m_ti.m_private_data = dmx->stsd; dmx->ptzr = add_packetizer(new video_packetizer_c(this, m_ti, MKV_V_QUICKTIME, 0.0, dmx->v_width, dmx->v_height)); - m_ti.m_private_data = nullptr; show_packetizer_info(dmx->id, PTZR(dmx->ptzr)); } void qtmp4_reader_c::create_audio_packetizer_aac(qtmp4_demuxer_cptr &dmx) { - if (dmx->esds.decoder_config) { - m_ti.m_private_data = dmx->esds.decoder_config->get_buffer(); - m_ti.m_private_size = dmx->esds.decoder_config->get_size(); - } - + m_ti.m_private_data = dmx->esds.decoder_config; dmx->ptzr = add_packetizer(new aac_packetizer_c(this, m_ti, AAC_ID_MPEG4, dmx->a_aac_profile, (int)dmx->a_samplerate, dmx->a_channels, false, true)); - m_ti.m_private_data = nullptr; - m_ti.m_private_size = 0; if (dmx->a_aac_is_sbr) PTZR(dmx->ptzr)->set_audio_output_sampling_freq(dmx->a_aac_output_sample_rate); @@ -1324,7 +1304,7 @@ qtmp4_reader_c::create_audio_packetizer_passthrough(qtmp4_demuxer_cptr &dmx) { ptzr->set_track_type(track_audio); ptzr->set_codec_id(MKV_A_QUICKTIME); - ptzr->set_codec_private(dmx->stsd->get_buffer(), dmx->stsd->get_size()); + ptzr->set_codec_private(dmx->stsd); ptzr->set_audio_sampling_freq(dmx->a_samplerate); ptzr->set_audio_channels(dmx->a_channels); @@ -1408,7 +1388,8 @@ qtmp4_reader_c::create_subtitles_packetizer_vobsub(qtmp4_demuxer_cptr &dmx) { mxdebug_if(m_debug_headers, boost::format("VobSub IDX str:\n%1%") % idx_str); - dmx->ptzr = add_packetizer(new vobsub_packetizer_c(this, idx_str.c_str(), idx_str.length(), m_ti)); + m_ti.m_private_data = memory_c::clone(idx_str); + dmx->ptzr = add_packetizer(new vobsub_packetizer_c(this, m_ti)); show_packetizer_info(dmx->id, PTZR(dmx->ptzr)); } @@ -1428,6 +1409,7 @@ qtmp4_reader_c::create_packetizer(int64_t tid) { m_ti.m_id = dmx->id; m_ti.m_language = dmx->language; + m_ti.m_private_data.reset(); bool packetizer_ok = true; diff --git a/src/input/r_real.cpp b/src/input/r_real.cpp index 68f99aefd..c74686053 100644 --- a/src/input/r_real.cpp +++ b/src/input/r_real.cpp @@ -251,14 +251,9 @@ real_reader_c::parse_headers() { void real_reader_c::create_video_packetizer(real_demuxer_cptr dmx) { - if (dmx->private_data) { - m_ti.m_private_data = dmx->private_data->get_buffer(); - m_ti.m_private_size = dmx->private_data->get_size(); - } - + m_ti.m_private_data = dmx->private_data; std::string codec_id = (boost::format("V_REAL/%1%") % dmx->fourcc).str(); dmx->ptzr = add_packetizer(new video_packetizer_c(this, m_ti, codec_id.c_str(), 0.0, dmx->width, dmx->height)); - m_ti.m_private_data = nullptr; if (strcmp(dmx->fourcc, "RV40")) dmx->rv_dimensions = true; @@ -361,7 +356,8 @@ real_reader_c::create_audio_packetizer(real_demuxer_cptr dmx) { if (!strcasecmp(dmx->fourcc, "COOK")) dmx->cook_audio_fix = true; - dmx->ptzr = add_packetizer(new ra_packetizer_c(this, m_ti, dmx->samples_per_second, dmx->channels, dmx->bits_per_sample, get_uint32_be(dmx->fourcc), dmx->private_data)); + m_ti.m_private_data = dmx->private_data; + dmx->ptzr = add_packetizer(new ra_packetizer_c(this, m_ti, dmx->samples_per_second, dmx->channels, dmx->bits_per_sample, get_uint32_be(dmx->fourcc))); show_packetizer_info(dmx->track->id, PTZR(dmx->ptzr)); } @@ -379,6 +375,7 @@ real_reader_c::create_packetizer(int64_t tid) { rmff_track_t *track = dmx->track; m_ti.m_id = track->id; + m_ti.m_private_data.reset(); if (RMFF_TRACK_TYPE_VIDEO == track->type) create_video_packetizer(dmx); diff --git a/src/input/r_srt.cpp b/src/input/r_srt.cpp index 1fc4dbe84..76cf2bdcf 100644 --- a/src/input/r_srt.cpp +++ b/src/input/r_srt.cpp @@ -57,7 +57,7 @@ srt_reader_c::create_packetizer(int64_t) { return; bool is_utf8 = m_text_in->get_byte_order() != BO_NONE; - add_packetizer(new textsubs_packetizer_c(this, m_ti, MKV_S_TEXTUTF8, nullptr, 0, true, is_utf8)); + add_packetizer(new textsubs_packetizer_c(this, m_ti, MKV_S_TEXTUTF8, true, is_utf8)); show_packetizer_info(0, PTZR0); } diff --git a/src/input/r_ssa.cpp b/src/input/r_ssa.cpp index 9c7e5678d..cf87cbe6e 100644 --- a/src/input/r_ssa.cpp +++ b/src/input/r_ssa.cpp @@ -69,8 +69,8 @@ ssa_reader_c::create_packetizer(int64_t) { if (!demuxing_requested('s', 0) || (NPTZR() != 0)) return; - std::string global = m_subs->get_global(); - add_packetizer(new textsubs_packetizer_c(this, m_ti, m_subs->is_ass() ? MKV_S_TEXTASS : MKV_S_TEXTSSA, global.c_str(), global.length(), false, false)); + m_ti.m_private_data = memory_c::clone(m_subs->get_global()); + add_packetizer(new textsubs_packetizer_c(this, m_ti, m_subs->is_ass() ? MKV_S_TEXTASS : MKV_S_TEXTSSA, false, false)); show_packetizer_info(0, PTZR0); } diff --git a/src/input/r_usf.cpp b/src/input/r_usf.cpp index 7bc415458..f0e7799c6 100644 --- a/src/input/r_usf.cpp +++ b/src/input/r_usf.cpp @@ -154,8 +154,9 @@ usf_reader_c::create_packetizer(int64_t tid) { if (!demuxing_requested('s', tid) || (-1 != track->m_ptzr)) return; - m_ti.m_language = track->m_language; - track->m_ptzr = add_packetizer(new textsubs_packetizer_c(this, m_ti, MKV_S_TEXTUSF, m_private_data.c_str(), m_private_data.length(), false, true)); + m_ti.m_private_data = memory_c::clone(m_private_data); + m_ti.m_language = track->m_language; + track->m_ptzr = add_packetizer(new textsubs_packetizer_c(this, m_ti, MKV_S_TEXTUSF, false, true)); show_packetizer_info(tid, PTZR(track->m_ptzr)); } diff --git a/src/input/r_vobsub.cpp b/src/input/r_vobsub.cpp index 2802c0849..056cd8612 100644 --- a/src/input/r_vobsub.cpp +++ b/src/input/r_vobsub.cpp @@ -127,7 +127,8 @@ vobsub_reader_c::create_packetizer(int64_t tid) { vobsub_track_c *track = tracks[tid]; m_ti.m_id = tid; m_ti.m_language = tracks[tid]->language; - track->ptzr = add_packetizer(new vobsub_packetizer_c(this, idx_data.c_str(), idx_data.length(), m_ti)); + m_ti.m_private_data = memory_c::clone(idx_data); + track->ptzr = add_packetizer(new vobsub_packetizer_c(this, m_ti)); int64_t avg_duration; if (!track->entries.empty()) { diff --git a/src/input/r_wavpack.cpp b/src/input/r_wavpack.cpp index 7ee1313cf..9c1fe026f 100644 --- a/src/input/r_wavpack.cpp +++ b/src/input/r_wavpack.cpp @@ -94,12 +94,9 @@ wavpack_reader_c::create_packetizer(int64_t) { if (!demuxing_requested('a', 0) || (NPTZR() != 0)) return; - uint16_t version_le; - put_uint16_le(&version_le, header.version); - m_ti.m_private_data = (unsigned char *)&version_le; - m_ti.m_private_size = sizeof(uint16_t); + m_ti.m_private_data = memory_c::alloc(sizeof(uint16_t)); + put_uint16_le(m_ti.m_private_data->get_buffer(), header.version); add_packetizer(new wavpack_packetizer_c(this, m_ti, meta)); - m_ti.m_private_data = nullptr; show_packetizer_info(0, PTZR0); } diff --git a/src/merge/connection_checks.h b/src/merge/connection_checks.h new file mode 100644 index 000000000..fec374f94 --- /dev/null +++ b/src/merge/connection_checks.h @@ -0,0 +1,65 @@ +/* + mkvmerge -- utility for splicing together matroska files + from component media subtypes + + Distributed under the GPL + see the file COPYING for details + or visit http://www.gnu.org/copyleft/gpl.html + + connection_check* macros + + Written by Moritz Bunkus . +*/ + +#ifndef MTX_MERGE_CONNECTION_CHECKS_H +#define MTX_MERGE_CONNECTION_CHECKS_H + +#define connect_check_a_samplerate(a, b) \ + if ((a) != (b)) { \ + error_message = (boost::format(Y("The sample rate of the two audio tracks is different: %1% and %2%")) % (a) % (b)).str(); \ + return CAN_CONNECT_NO_PARAMETERS; \ + } +#define connect_check_a_channels(a, b) \ + if ((a) != (b)) { \ + error_message = (boost::format(Y("The number of channels of the two audio tracks is different: %1% and %2%")) % (a) % (b)).str(); \ + return CAN_CONNECT_NO_PARAMETERS; \ + } +#define connect_check_a_bitdepth(a, b) \ + if ((a) != (b)) { \ + error_message = (boost::format(Y("The number of bits per sample of the two audio tracks is different: %1% and %2%")) % (a) % (b)).str(); \ + return CAN_CONNECT_NO_PARAMETERS; \ + } +#define connect_check_v_width(a, b) \ + if ((a) != (b)) { \ + error_message = (boost::format(Y("The width of the two tracks is different: %1% and %2%")) % (a) % (b)).str(); \ + return CAN_CONNECT_NO_PARAMETERS; \ + } +#define connect_check_v_height(a, b) \ + if ((a) != (b)) { \ + error_message = (boost::format(Y("The height of the two tracks is different: %1% and %2%")) % (a) % (b)).str(); \ + return CAN_CONNECT_NO_PARAMETERS; \ + } +#define connect_check_v_dwidth(a, b) \ + if ((a) != (b)) { \ + error_message = (boost::format(Y("The display width of the two tracks is different: %1% and %2%")) % (a) % (b)).str(); \ + return CAN_CONNECT_NO_PARAMETERS; \ + } +#define connect_check_v_dheight(a, b) \ + if ((a) != (b)) { \ + error_message = (boost::format(Y("The display height of the two tracks is different: %1% and %2%")) % (a) % (b)).str(); \ + return CAN_CONNECT_NO_PARAMETERS; \ + } +#define connect_check_codec_id(a, b) \ + if ((a) != (b)) { \ + error_message = (boost::format(Y("The CodecID of the two tracks is different: %1% and %2%")) % (a) % (b)).str(); \ + return CAN_CONNECT_NO_PARAMETERS; \ + } +#define connect_check_codec_private(b) \ + if ( (!!this->m_ti.m_private_data != !!b->m_ti.m_private_data) \ + || ( this->m_ti.m_private_data && ( this->m_ti.m_private_data->get_size() != b->m_ti.m_private_data->get_size())) \ + || ( this->m_ti.m_private_data && memcmp(this->m_ti.m_private_data->get_buffer(), b->m_ti.m_private_data->get_buffer(), this->m_ti.m_private_data->get_size()))) { \ + error_message = (boost::format(Y("The codec's private data does not match (lengths: %1% and %2%).")) % this->m_ti.m_private_data->get_size() % b->m_ti.m_private_data->get_size()).str(); \ + return CAN_CONNECT_MAYBE_CODECPRIVATE; \ + } + +#endif // MTX_MERGE_CONNECTION_CHECKS_H diff --git a/src/merge/pr_generic.cpp b/src/merge/pr_generic.cpp index 7baed40d8..b975b5c4f 100644 --- a/src/merge/pr_generic.cpp +++ b/src/merge/pr_generic.cpp @@ -72,8 +72,6 @@ generic_packetizer_c::generic_packetizer_c(generic_reader_c *reader, , m_default_track_warning_printed(false) , m_huid(0) , m_htrack_max_add_block_ids(-1) - , m_hcodec_private(nullptr) - , m_hcodec_private_length(0) , m_haudio_sampling_freq(-1.0) , m_haudio_output_sampling_freq(-1.0) , m_haudio_channels(-1) @@ -252,7 +250,6 @@ generic_packetizer_c::generic_packetizer_c(generic_reader_c *reader, } generic_packetizer_c::~generic_packetizer_c() { - safefree(m_hcodec_private); if (!m_packet_queue.empty()) mxerror_tid(m_ti.m_fname, m_ti.m_id, boost::format(Y("Packet queue not empty (flushed: %1%). Frames have been lost during remux. %2%\n")) % m_has_been_flushed % BUGMSG); } @@ -344,21 +341,15 @@ generic_packetizer_c::set_codec_id(const std::string &id) { } void -generic_packetizer_c::set_codec_private(const unsigned char *cp, - int length) { - safefree(m_hcodec_private); +generic_packetizer_c::set_codec_private(memory_cptr const &buffer) { + if (buffer && buffer->get_size()) { + m_hcodec_private = buffer->clone(); - if (!cp) { - m_hcodec_private = nullptr; - m_hcodec_private_length = 0; - return; - } + if (m_track_entry) + GetChild(*m_track_entry).CopyBuffer(static_cast(m_hcodec_private->get_buffer()), m_hcodec_private->get_size()); - m_hcodec_private = (unsigned char *)safememdup(cp, length); - m_hcodec_private_length = length; - - if (m_track_entry) - GetChild(*m_track_entry).CopyBuffer((binary *)m_hcodec_private, m_hcodec_private_length); + } else + m_hcodec_private.reset(); } void @@ -634,7 +625,7 @@ generic_packetizer_c::set_headers() { GetChild(m_track_entry).SetValue(m_hcodec_id); if (m_hcodec_private) - GetChild(*m_track_entry).CopyBuffer((binary *)m_hcodec_private, m_hcodec_private_length); + GetChild(*m_track_entry).CopyBuffer(static_cast(m_hcodec_private->get_buffer()), m_hcodec_private->get_size()); if (!outputting_webm()) { if (-1 != m_htrack_min_cache) @@ -1528,11 +1519,8 @@ generic_reader_c::get_underlying_input_as_multi_file_io() //-------------------------------------------------------------------- track_info_c::track_info_c() - : m_initialized(true) - , m_id(0) + : m_id(0) , m_disable_multi_file(false) - , m_private_data(nullptr) - , m_private_size(0) , m_aspect_ratio(0.0) , m_display_width(0) , m_display_height(0) @@ -1562,20 +1550,8 @@ track_info_c::track_info_c() { } -void -track_info_c::free_contents() { - if (!m_initialized) - return; - - safefree(m_private_data); - - m_initialized = false; -} - track_info_c & track_info_c::operator =(const track_info_c &src) { - free_contents(); - m_id = src.m_id; m_fname = src.m_fname; @@ -1586,8 +1562,7 @@ track_info_c::operator =(const track_info_c &src) { m_track_tags = src.m_track_tags; m_disable_multi_file = src.m_disable_multi_file; - m_private_size = src.m_private_size; - m_private_data = (unsigned char *)safememdup(src.m_private_data, m_private_size); + m_private_data = src.m_private_data ? src.m_private_data->clone() : src.m_private_data; m_all_fourccs = src.m_all_fourccs; @@ -1670,8 +1645,6 @@ track_info_c::operator =(const track_info_c &src) { m_default_durations = src.m_default_durations; m_max_blockadd_ids = src.m_max_blockadd_ids; - m_initialized = true; - return *this; } diff --git a/src/merge/pr_generic.h b/src/merge/pr_generic.h index 267b1495c..56c9cd94c 100644 --- a/src/merge/pr_generic.h +++ b/src/merge/pr_generic.h @@ -232,8 +232,7 @@ public: bool m_disable_multi_file; // Options used by the packetizers. - unsigned char *m_private_data; - size_t m_private_size; + memory_cptr m_private_data; std::map m_all_fourccs; std::string m_fourcc; @@ -316,17 +315,13 @@ public: public: track_info_c(); - track_info_c(const track_info_c &src) - : m_initialized(false) - { + track_info_c(const track_info_c &src) { *this = src; } virtual ~track_info_c() { - free_contents(); } track_info_c &operator =(const track_info_c &src); - virtual void free_contents(); virtual bool display_dimensions_or_aspect_ratio_set(); }; @@ -437,53 +432,6 @@ enum connection_result_e { CAN_CONNECT_MAYBE_CODECPRIVATE }; -#define connect_check_a_samplerate(a, b) \ - if ((a) != (b)) { \ - error_message = (boost::format(Y("The sample rate of the two audio tracks is different: %1% and %2%")) % (a) % (b)).str(); \ - return CAN_CONNECT_NO_PARAMETERS; \ - } -#define connect_check_a_channels(a, b) \ - if ((a) != (b)) { \ - error_message = (boost::format(Y("The number of channels of the two audio tracks is different: %1% and %2%")) % (a) % (b)).str(); \ - return CAN_CONNECT_NO_PARAMETERS; \ - } -#define connect_check_a_bitdepth(a, b) \ - if ((a) != (b)) { \ - error_message = (boost::format(Y("The number of bits per sample of the two audio tracks is different: %1% and %2%")) % (a) % (b)).str(); \ - return CAN_CONNECT_NO_PARAMETERS; \ - } -#define connect_check_v_width(a, b) \ - if ((a) != (b)) { \ - error_message = (boost::format(Y("The width of the two tracks is different: %1% and %2%")) % (a) % (b)).str(); \ - return CAN_CONNECT_NO_PARAMETERS; \ - } -#define connect_check_v_height(a, b) \ - if ((a) != (b)) { \ - error_message = (boost::format(Y("The height of the two tracks is different: %1% and %2%")) % (a) % (b)).str(); \ - return CAN_CONNECT_NO_PARAMETERS; \ - } -#define connect_check_v_dwidth(a, b) \ - if ((a) != (b)) { \ - error_message = (boost::format(Y("The display width of the two tracks is different: %1% and %2%")) % (a) % (b)).str(); \ - return CAN_CONNECT_NO_PARAMETERS; \ - } -#define connect_check_v_dheight(a, b) \ - if ((a) != (b)) { \ - error_message = (boost::format(Y("The display height of the two tracks is different: %1% and %2%")) % (a) % (b)).str(); \ - return CAN_CONNECT_NO_PARAMETERS; \ - } -#define connect_check_codec_id(a, b) \ - if ((a) != (b)) { \ - error_message = (boost::format(Y("The CodecID of the two tracks is different: %1% and %2%")) % (a) % (b)).str(); \ - return CAN_CONNECT_NO_PARAMETERS; \ - } -#define connect_check_codec_private(b) \ - if ( (!!this->m_ti.m_private_data != !!b->m_ti.m_private_data) \ - || ( this->m_ti.m_private_size != b->m_ti.m_private_size) \ - || ( this->m_ti.m_private_data && memcmp(this->m_ti.m_private_data, b->m_ti.m_private_data, this->m_ti.m_private_size))) { \ - error_message = (boost::format(Y("The codec's private data does not match (lengths: %1% and %2%).")) % this->m_ti.m_private_size % b->m_ti.m_private_size).str(); \ - return CAN_CONNECT_MAYBE_CODECPRIVATE; \ - } typedef std::deque::iterator packet_cptr_di; @@ -508,8 +456,7 @@ protected: int m_htrack_max_add_block_ids; std::string m_hcodec_id; - unsigned char *m_hcodec_private; - size_t m_hcodec_private_length; + memory_cptr m_hcodec_private; float m_haudio_sampling_freq, m_haudio_output_sampling_freq; int m_haudio_channels, m_haudio_bit_depth; @@ -613,7 +560,7 @@ public: virtual void set_language(const std::string &language); virtual void set_codec_id(const std::string &id); - virtual void set_codec_private(const unsigned char *cp, int length); + virtual void set_codec_private(memory_cptr const &buffer); virtual void set_track_min_cache(int min_cache); virtual void set_track_max_cache(int max_cache); diff --git a/src/output/p_aac.cpp b/src/output/p_aac.cpp index b1f477072..7bbd6d824 100644 --- a/src/output/p_aac.cpp +++ b/src/output/p_aac.cpp @@ -16,6 +16,7 @@ #include "common/aac.h" #include "common/hacks.h" #include "common/matroska.h" +#include "merge/connection_checks.h" #include "output/p_aac.h" using namespace libmatroska; @@ -130,8 +131,8 @@ aac_packetizer_c::set_headers() { set_audio_sampling_freq((float)m_samples_per_sec); set_audio_channels(m_channels); - if (m_ti.m_private_data && (0 < m_ti.m_private_size)) - set_codec_private(m_ti.m_private_data, m_ti.m_private_size); + if (m_ti.m_private_data && (0 < m_ti.m_private_data->get_size())) + set_codec_private(m_ti.m_private_data); else if (!hack_engaged(ENGAGE_OLD_AAC_CODECID)) { unsigned char buffer[5]; @@ -140,7 +141,7 @@ aac_packetizer_c::set_headers() { m_channels, m_samples_per_sec, AAC_PROFILE_SBR == m_profile ? m_samples_per_sec * 2 : m_samples_per_sec, AAC_PROFILE_SBR == m_profile); - set_codec_private(buffer, length); + set_codec_private(memory_c::clone(buffer, length)); } generic_packetizer_c::set_headers(); diff --git a/src/output/p_ac3.cpp b/src/output/p_ac3.cpp index 073a27035..c246b391a 100644 --- a/src/output/p_ac3.cpp +++ b/src/output/p_ac3.cpp @@ -15,8 +15,8 @@ #include "common/ac3.h" #include "common/matroska.h" +#include "merge/connection_checks.h" #include "merge/output_control.h" -#include "merge/pr_generic.h" #include "output/p_ac3.h" using namespace libmatroska; diff --git a/src/output/p_alac.cpp b/src/output/p_alac.cpp index 25077419b..ed93a2b97 100644 --- a/src/output/p_alac.cpp +++ b/src/output/p_alac.cpp @@ -16,6 +16,7 @@ #include "common/alac.h" #include "common/hacks.h" #include "common/matroska.h" +#include "merge/connection_checks.h" #include "output/p_alac.h" using namespace libmatroska; @@ -37,7 +38,7 @@ alac_packetizer_c::alac_packetizer_c(generic_reader_c *p_reader, set_audio_sampling_freq(static_cast(m_sample_rate)); set_audio_channels(m_channels); - set_codec_private(magic_cookie->get_buffer(), magic_cookie->get_size()); + set_codec_private(magic_cookie); } alac_packetizer_c::~alac_packetizer_c() { diff --git a/src/output/p_avc.cpp b/src/output/p_avc.cpp index 37a8081ed..7eed73885 100644 --- a/src/output/p_avc.cpp +++ b/src/output/p_avc.cpp @@ -17,6 +17,7 @@ #include "common/math.h" #include "common/matroska.h" #include "common/mpeg4_p10.h" +#include "merge/connection_checks.h" #include "merge/output_control.h" #include "output/p_avc.h" @@ -114,8 +115,7 @@ mpeg4_p10_es_video_packetizer_c::handle_delayed_headers() { if (0 < m_parser.get_num_skipped_frames()) mxwarn_tid(m_ti.m_fname, m_ti.m_id, boost::format(Y("This AVC/h.264 track does not start with a key frame. The first %1% frames have been skipped.\n")) % m_parser.get_num_skipped_frames()); - memory_cptr new_avcc = m_parser.get_avcc(); - set_codec_private(new_avcc->get_buffer(), new_avcc->get_size()); + set_codec_private(m_parser.get_avcc()); if ( !m_reader->is_providing_timecodes() && !m_timecode_factory diff --git a/src/output/p_avc.h b/src/output/p_avc.h index db903ca6c..7c7c8fb05 100644 --- a/src/output/p_avc.h +++ b/src/output/p_avc.h @@ -39,7 +39,7 @@ public: virtual void flush_frames(); virtual translatable_string_c get_format_name() const { - return YT("AVC/h.264"); + return YT("AVC/h.264 (unframed)"); }; virtual void connect(generic_packetizer_c *src, int64_t p_append_timecode_offset = -1); diff --git a/src/output/p_dts.cpp b/src/output/p_dts.cpp index 090e185f1..9df973296 100644 --- a/src/output/p_dts.cpp +++ b/src/output/p_dts.cpp @@ -16,8 +16,7 @@ #include "common/dts.h" #include "common/matroska.h" -#include "merge/output_control.h" -#include "merge/pr_generic.h" +#include "merge/connection_checks.h" #include "output/p_dts.h" using namespace libmatroska; diff --git a/src/output/p_flac.cpp b/src/output/p_flac.cpp index 98053d7c5..3f6c79dd2 100644 --- a/src/output/p_flac.cpp +++ b/src/output/p_flac.cpp @@ -21,7 +21,7 @@ #include "common/checksums.h" #include "common/flac.h" #include "common/matroska.h" -#include "merge/pr_generic.h" +#include "merge/connection_checks.h" #include "output/p_flac.h" using namespace libmatroska; @@ -58,7 +58,7 @@ flac_packetizer_c::~flac_packetizer_c() { void flac_packetizer_c::set_headers() { set_codec_id(MKV_A_FLAC); - set_codec_private(m_header->get_buffer(), m_header->get_size()); + set_codec_private(m_header); set_audio_sampling_freq((float)m_stream_info.sample_rate); set_audio_channels(m_stream_info.channels); set_audio_bit_depth(m_stream_info.bits_per_sample); diff --git a/src/output/p_kate.cpp b/src/output/p_kate.cpp index 6715e162e..f002dd038 100644 --- a/src/output/p_kate.cpp +++ b/src/output/p_kate.cpp @@ -19,26 +19,20 @@ #include "common/endian.h" #include "common/kate.h" #include "common/matroska.h" -#include "merge/pr_generic.h" +#include "merge/connection_checks.h" #include "output/p_kate.h" using namespace libmatroska; -kate_packetizer_c::kate_packetizer_c(generic_reader_c *p_reader, - track_info_c &p_ti, - const void *global_data, - int global_size) - : generic_packetizer_c(p_reader, p_ti) - , m_global_data(new memory_c((unsigned char *)safememdup(global_data ? global_data : m_ti.m_private_data, - global_data ? global_size : m_ti.m_private_size), - global_data ? global_size : m_ti.m_private_size, true)) - , m_previous_timecode(0) +kate_packetizer_c::kate_packetizer_c(generic_reader_c *reader, + track_info_c &ti) + : generic_packetizer_c{reader, ti} + , m_previous_timecode{} { set_track_type(track_subtitle); // the number of headers to expect is stored in the first header - memory_cptr temp(new memory_c((unsigned char *)m_global_data->get_buffer(), m_global_data->get_size(), false)); - std::vector blocks = unlace_memory_xiph(temp); + auto blocks = unlace_memory_xiph(m_ti.m_private_data); kate_parse_identification_header(blocks[0]->get_buffer(), blocks[0]->get_size(), m_kate_id); if (blocks.size() != m_kate_id.nheaders) @@ -56,9 +50,7 @@ kate_packetizer_c::~kate_packetizer_c() { void kate_packetizer_c::set_headers() { set_codec_id(MKV_S_KATE); - - memory_cptr codec_private = lace_memory_xiph(m_headers); - set_codec_private(codec_private->get_buffer(), codec_private->get_size()); + set_codec_private(lace_memory_xiph(m_headers)); generic_packetizer_c::set_headers(); } diff --git a/src/output/p_kate.h b/src/output/p_kate.h index cf049b678..f3f242b9d 100644 --- a/src/output/p_kate.h +++ b/src/output/p_kate.h @@ -23,14 +23,13 @@ class kate_packetizer_c: public generic_packetizer_c { private: std::vector m_headers; - memory_cptr m_global_data; kate_identification_header_t m_kate_id; int64_t m_previous_timecode; public: - kate_packetizer_c(generic_reader_c *p_reader, track_info_c &p_ti, const void *global_data, int global_size); + kate_packetizer_c(generic_reader_c *reader, track_info_c &ti); virtual ~kate_packetizer_c(); virtual int process(packet_cptr packet); diff --git a/src/output/p_mp3.cpp b/src/output/p_mp3.cpp index e696d1315..6745a2f28 100644 --- a/src/output/p_mp3.cpp +++ b/src/output/p_mp3.cpp @@ -15,6 +15,7 @@ #include "common/matroska.h" #include "common/mp3.h" +#include "merge/connection_checks.h" #include "merge/output_control.h" #include "output/p_mp3.h" diff --git a/src/output/p_mpeg1_2.cpp b/src/output/p_mpeg1_2.cpp index 6585cbc82..130635c7a 100644 --- a/src/output/p_mpeg1_2.cpp +++ b/src/output/p_mpeg1_2.cpp @@ -161,7 +161,7 @@ mpeg1_2_video_packetizer_c::remove_stuffing_bytes_and_handle_sequence_headers(pa return; if (!m_hcodec_private) { - set_codec_private(new_seq_hdr->get_buffer(), new_seq_hdr->get_size()); + set_codec_private(new_seq_hdr); rerender_track_headers(); } @@ -282,7 +282,7 @@ void mpeg1_2_video_packetizer_c::create_private_data() { MPEGChunk *raw_seq_hdr = m_parser.GetRealSequenceHeader(); if (raw_seq_hdr) { - set_codec_private(raw_seq_hdr->GetPointer(), raw_seq_hdr->GetSize()); + set_codec_private(memory_c::clone(raw_seq_hdr->GetPointer(), raw_seq_hdr->GetSize())); rerender_track_headers(); } } diff --git a/src/output/p_mpeg4_p10.cpp b/src/output/p_mpeg4_p10.cpp index 22546c91b..7f844e5da 100644 --- a/src/output/p_mpeg4_p10.cpp +++ b/src/output/p_mpeg4_p10.cpp @@ -37,21 +37,19 @@ mpeg4_p10_video_packetizer_c(generic_reader_c *p_reader, setup_nalu_size_len_change(); - if (m_ti.m_private_data && (0 < m_ti.m_private_size)) - set_codec_private(m_ti.m_private_data, m_ti.m_private_size); + set_codec_private(m_ti.m_private_data); } void mpeg4_p10_video_packetizer_c::set_headers() { - if (m_ti.m_private_data && m_ti.m_private_size) { + if (m_ti.m_private_data && m_ti.m_private_data->get_size()) { extract_aspect_ratio(); if (m_ti.m_fix_bitstream_frame_rate) { int64_t l_track_default_duration = 0.0 < m_fps ? static_cast(1000000000.0 / m_fps) : -1; int64_t duration = m_timecode_factory ? m_timecode_factory->get_default_duration(l_track_default_duration) : l_track_default_duration; - mpeg4::p10::fix_sps_fps(m_ti.m_private_data, m_ti.m_private_size, duration); - set_codec_private(m_ti.m_private_data, m_ti.m_private_size); + set_codec_private(mpeg4::p10::fix_sps_fps(m_ti.m_private_data, duration)); } } @@ -60,21 +58,24 @@ mpeg4_p10_video_packetizer_c::set_headers() { void mpeg4_p10_video_packetizer_c::extract_aspect_ratio() { - uint32_t num, den; + uint32_t num = 0, den = 0; - if (mpeg4::p10::extract_par(m_ti.m_private_data, m_ti.m_private_size, num, den) && (0 != num) && (0 != den)) { - if (!display_dimensions_or_aspect_ratio_set()) { - double par = (double)num / (double)den; + if (!m_ti.m_private_data) + return; - set_video_display_dimensions(1 <= par ? irnd(m_width * par) : m_width, - 1 <= par ? m_height : irnd(m_height / par), - PARAMETER_SOURCE_BITSTREAM); + mpeg4::p10::extract_par(m_ti.m_private_data, num, den); + if (!num || !den || display_dimensions_or_aspect_ratio_set()) + return; - mxinfo_tid(m_ti.m_fname, m_ti.m_id, - boost::format(Y("Extracted the aspect ratio information from the MPEG-4 layer 10 (AVC) video data and set the display dimensions to %1%/%2%.\n")) - % m_ti.m_display_width % m_ti.m_display_height); - } - } + auto par = static_cast(num) / static_cast(den); + + set_video_display_dimensions(1 <= par ? irnd(m_width * par) : m_width, + 1 <= par ? m_height : irnd(m_height / par), + PARAMETER_SOURCE_BITSTREAM); + + mxinfo_tid(m_ti.m_fname, m_ti.m_id, + boost::format(Y("Extracted the aspect ratio information from the MPEG-4 layer 10 (AVC) video data and set the display dimensions to %1%/%2%.\n")) + % m_ti.m_display_width % m_ti.m_display_height); } int @@ -105,8 +106,8 @@ mpeg4_p10_video_packetizer_c::can_connect_to(generic_packetizer_c *src, if (CAN_CONNECT_YES != result) return result; - if (m_ti.m_private_data && memcmp(m_ti.m_private_data, vsrc->m_ti.m_private_data, m_ti.m_private_size)) { - error_message = (boost::format(Y("The codec's private data does not match. Both have the same length (%1%) but different content.")) % m_ti.m_private_size).str(); + if (m_ti.m_private_data && vsrc->m_ti.m_private_data && memcmp(m_ti.m_private_data->get_buffer(), vsrc->m_ti.m_private_data->get_buffer(), m_ti.m_private_data->get_size())) { + error_message = (boost::format(Y("The codec's private data does not match. Both have the same length (%1%) but different content.")) % m_ti.m_private_data->get_size()).str(); return CAN_CONNECT_MAYBE_CODECPRIVATE; } @@ -115,20 +116,21 @@ mpeg4_p10_video_packetizer_c::can_connect_to(generic_packetizer_c *src, void mpeg4_p10_video_packetizer_c::setup_nalu_size_len_change() { - if (!m_ti.m_private_data || (5 > m_ti.m_private_size)) + if (!m_ti.m_private_data || (5 > m_ti.m_private_data->get_size())) return; - m_nalu_size_len_src = (m_ti.m_private_data[4] & 0x03) + 1; + auto private_data = m_ti.m_private_data->get_buffer(); + m_nalu_size_len_src = (private_data[4] & 0x03) + 1; m_nalu_size_len_dst = m_nalu_size_len_src; if (!m_ti.m_nalu_size_length || (m_ti.m_nalu_size_length == m_nalu_size_len_src)) return; - m_nalu_size_len_dst = m_ti.m_nalu_size_length; - m_ti.m_private_data[4] = (m_ti.m_private_data[4] & 0xfc) | (m_nalu_size_len_dst - 1); - m_max_nalu_size = 1ll << (8 * m_nalu_size_len_dst); + m_nalu_size_len_dst = m_ti.m_nalu_size_length; + private_data[4] = (private_data[4] & 0xfc) | (m_nalu_size_len_dst - 1); + m_max_nalu_size = 1ll << (8 * m_nalu_size_len_dst); - set_codec_private(m_ti.m_private_data, m_ti.m_private_size); + set_codec_private(m_ti.m_private_data); mxverb(2, boost::format("mpeg4_p10: Adjusting NALU size length from %1% to %2%\n") % m_nalu_size_len_src % m_nalu_size_len_dst); } diff --git a/src/output/p_mpeg4_p2.cpp b/src/output/p_mpeg4_p2.cpp index 606771d9f..3cb3d14c4 100644 --- a/src/output/p_mpeg4_p2.cpp +++ b/src/output/p_mpeg4_p2.cpp @@ -46,11 +46,8 @@ mpeg4_p2_video_packetizer_c(generic_reader_c *p_reader, } else { set_codec_id(MKV_V_MPEG4_ASP); - if (!m_input_is_native) { - safefree(m_ti.m_private_data); - m_ti.m_private_data = nullptr; - m_ti.m_private_size = 0; - } + if (!m_input_is_native) + m_ti.m_private_data.reset(); // If no external timecode file has been specified then mkvmerge // might have created a factory due to the --default-duration @@ -176,16 +173,12 @@ mpeg4_p2_video_packetizer_c::extract_config_data(packet_cptr &packet) { if (m_ti.m_private_data) return; - memory_c *config_data = mpeg4::p2::parse_config_data(packet->data->get_buffer(), packet->data->get_size(), m_config_data); - if (!config_data) + m_ti.m_private_data = memory_cptr{mpeg4::p2::parse_config_data(packet->data->get_buffer(), packet->data->get_size(), m_config_data)}; + if (!m_ti.m_private_data) mxerror_tid(m_ti.m_fname, m_ti.m_id, Y("Could not find the codec configuration data in the first MPEG-4 part 2 video frame. This track cannot be stored in native mode.\n")); - m_ti.m_private_data = (unsigned char *)safememdup(config_data->get_buffer(), config_data->get_size()); - m_ti.m_private_size = config_data->get_size(); - delete config_data; - fix_codec_string(); - set_codec_private(m_ti.m_private_data, m_ti.m_private_size); + set_codec_private(m_ti.m_private_data); rerender_track_headers(); } @@ -193,13 +186,14 @@ void mpeg4_p2_video_packetizer_c::fix_codec_string() { static const unsigned char start_code[4] = {0x00, 0x00, 0x01, 0xb2}; - if (!m_ti.m_private_data || (0 == m_ti.m_private_size)) + if (!m_ti.m_private_data || (0 == m_ti.m_private_data->get_size())) return; - int size = m_ti.m_private_size; + auto private_data = m_ti.m_private_data->get_buffer(); + int size = m_ti.m_private_data->get_size(); int i; for (i = 0; 9 < size;) { - if (memcmp(&m_ti.m_private_data[i], start_code, 4) != 0) { + if (memcmp(&private_data[i], start_code, 4) != 0) { ++i; --size; continue; @@ -207,12 +201,12 @@ mpeg4_p2_video_packetizer_c::fix_codec_string() { i += 8; size -= 8; - if (strncasecmp((const char *)&m_ti.m_private_data[i - 4], "divx", 4) != 0) + if (strncasecmp((const char *)&private_data[i - 4], "divx", 4) != 0) continue; - unsigned char *end_pos = (unsigned char *)memchr(&m_ti.m_private_data[i], 0, size); + unsigned char *end_pos = (unsigned char *)memchr(&private_data[i], 0, size); if (!end_pos) - end_pos = &m_ti.m_private_data[i + size]; + end_pos = &private_data[i + size]; --end_pos; if ('p' == *end_pos) @@ -361,11 +355,11 @@ mpeg4_p2_video_packetizer_c::extract_size(const unsigned char *buffer, set_video_pixel_width(xtr_width); set_video_pixel_height(xtr_height); - if (!m_output_is_native && (sizeof(alBITMAPINFOHEADER) <= m_ti.m_private_size)) { - alBITMAPINFOHEADER *bih = (alBITMAPINFOHEADER *)m_ti.m_private_data; + if (!m_output_is_native && m_ti.m_private_data && (sizeof(alBITMAPINFOHEADER) <= m_ti.m_private_data->get_size())) { + auto bih = reinterpret_cast(m_ti.m_private_data->get_buffer()); put_uint32_le(&bih->bi_width, xtr_width); put_uint32_le(&bih->bi_height, xtr_height); - set_codec_private(m_ti.m_private_data, m_ti.m_private_size); + set_codec_private(m_ti.m_private_data); } m_hvideo_display_width = -1; diff --git a/src/output/p_opus.cpp b/src/output/p_opus.cpp index c1d0113e7..71602bac9 100644 --- a/src/output/p_opus.cpp +++ b/src/output/p_opus.cpp @@ -15,25 +15,24 @@ #include "common/matroska.h" #include "common/opus.h" - +#include "merge/connection_checks.h" #include "output/p_opus.h" using namespace libmatroska; -opus_packetizer_c::opus_packetizer_c(generic_reader_c *p_reader, - track_info_c &p_ti, - memory_cptr const &id_header) - : generic_packetizer_c(p_reader, p_ti) +opus_packetizer_c::opus_packetizer_c(generic_reader_c *reader, + track_info_c &ti) + : generic_packetizer_c(reader, ti) , m_debug{debugging_requested("opus|opus_packetizer")} , m_next_calculated_timecode{timecode_c::ns(0)} - , m_id_header(mtx::opus::id_header_t::decode(id_header)) + , m_id_header(mtx::opus::id_header_t::decode(ti.m_private_data)) { mxdebug_if(m_debug, boost::format("ID header: %1%\n") % m_id_header); show_experimental_status_version(MKV_A_OPUS); set_track_type(track_audio); - set_codec_private(id_header->get_buffer(), id_header->get_size()); + set_codec_private(m_ti.m_private_data); } opus_packetizer_c::~opus_packetizer_c() { diff --git a/src/output/p_opus.h b/src/output/p_opus.h index 1dae0b24b..329160a79 100644 --- a/src/output/p_opus.h +++ b/src/output/p_opus.h @@ -28,7 +28,7 @@ private: mtx::opus::id_header_t m_id_header; public: - opus_packetizer_c(generic_reader_c *p_reader, track_info_c &p_ti, memory_cptr const &id_header); + opus_packetizer_c(generic_reader_c *reader, track_info_c &ti); virtual ~opus_packetizer_c(); virtual int process(packet_cptr packet); diff --git a/src/output/p_passthrough.cpp b/src/output/p_passthrough.cpp index a93f2cf14..bd73b93e8 100644 --- a/src/output/p_passthrough.cpp +++ b/src/output/p_passthrough.cpp @@ -14,7 +14,7 @@ #include "common/common_pch.h" #include "common/matroska.h" -#include "merge/pr_generic.h" +#include "merge/connection_checks.h" #include "output/p_passthrough.h" using namespace libmatroska; diff --git a/src/output/p_pcm.cpp b/src/output/p_pcm.cpp index 1f66e3fa7..a4c3613c0 100644 --- a/src/output/p_pcm.cpp +++ b/src/output/p_pcm.cpp @@ -15,7 +15,7 @@ #include "common/common_pch.h" #include "common/matroska.h" -#include "merge/pr_generic.h" +#include "merge/connection_checks.h" #include "output/p_pcm.h" using namespace libmatroska; diff --git a/src/output/p_realaudio.cpp b/src/output/p_realaudio.cpp index 328470815..0c321673b 100644 --- a/src/output/p_realaudio.cpp +++ b/src/output/p_realaudio.cpp @@ -14,7 +14,7 @@ #include "common/common_pch.h" #include "common/matroska.h" -#include "merge/pr_generic.h" +#include "merge/connection_checks.h" #include "output/p_realaudio.h" using namespace libmatroska; @@ -24,14 +24,12 @@ ra_packetizer_c::ra_packetizer_c(generic_reader_c *p_reader, int samples_per_sec, int channels, int bits_per_sample, - uint32_t fourcc, - const memory_cptr &private_data) + uint32_t fourcc) : generic_packetizer_c(p_reader, p_ti) , m_samples_per_sec(samples_per_sec) , m_channels(channels) , m_bits_per_sample(bits_per_sample) , m_fourcc(fourcc) - , m_private_data(private_data ? private_data->clone() : private_data) { set_track_type(track_audio, TFA_SHORT_QUEUEING); } @@ -47,8 +45,7 @@ ra_packetizer_c::set_headers() { set_audio_sampling_freq((float)m_samples_per_sec); set_audio_channels(m_channels); set_audio_bit_depth(m_bits_per_sample); - if (m_private_data) - set_codec_private(m_private_data->get_buffer(), m_private_data->get_size()); + set_codec_private(m_ti.m_private_data); generic_packetizer_c::set_headers(); m_track_entry->EnableLacing(false); diff --git a/src/output/p_realaudio.h b/src/output/p_realaudio.h index df8b42b73..b4201a03b 100644 --- a/src/output/p_realaudio.h +++ b/src/output/p_realaudio.h @@ -22,10 +22,9 @@ class ra_packetizer_c: public generic_packetizer_c { private: int m_samples_per_sec, m_channels, m_bits_per_sample; uint32_t m_fourcc; - memory_cptr m_private_data; public: - ra_packetizer_c(generic_reader_c *p_reader, track_info_c &p_ti, int samples_per_sec, int channels, int bits_per_sample, uint32_t fourcc, const memory_cptr &private_data); + ra_packetizer_c(generic_reader_c *p_reader, track_info_c &p_ti, int samples_per_sec, int channels, int bits_per_sample, uint32_t fourcc); virtual ~ra_packetizer_c(); virtual int process(packet_cptr packet); diff --git a/src/output/p_textsubs.cpp b/src/output/p_textsubs.cpp index 0ad59d0a9..1cb7d9a21 100644 --- a/src/output/p_textsubs.cpp +++ b/src/output/p_textsubs.cpp @@ -14,8 +14,8 @@ #include "common/common_pch.h" #include "common/matroska.h" +#include "merge/connection_checks.h" #include "merge/packet_extensions.h" -#include "merge/pr_generic.h" #include "output/p_textsubs.h" using namespace libmatroska; @@ -27,13 +27,10 @@ boost::regex textsubs_packetizer_c::s_re_translate_nl("\n", boost::regex::perl); textsubs_packetizer_c::textsubs_packetizer_c(generic_reader_c *p_reader, track_info_c &p_ti, const char *codec_id, - const void *global_data, - int global_size, bool recode, bool is_utf8) : generic_packetizer_c(p_reader, p_ti) , m_packetno(0) - , m_global_data(new memory_c((unsigned char *)safememdup(global_data, global_size), global_size, true)) , m_codec_id(codec_id) , m_recode(recode) { @@ -51,9 +48,7 @@ textsubs_packetizer_c::~textsubs_packetizer_c() { void textsubs_packetizer_c::set_headers() { set_codec_id(m_codec_id); - - if (m_global_data->is_allocated()) - set_codec_private((unsigned char *)m_global_data->get_buffer(), m_global_data->get_size()); + set_codec_private(m_ti.m_private_data); generic_packetizer_c::set_headers(); diff --git a/src/output/p_textsubs.h b/src/output/p_textsubs.h index 5ac86874d..7add4c38b 100644 --- a/src/output/p_textsubs.h +++ b/src/output/p_textsubs.h @@ -22,12 +22,11 @@ class textsubs_packetizer_c: public generic_packetizer_c { private: int m_packetno; charset_converter_cptr m_cc_utf8; - memory_cptr m_global_data; std::string m_codec_id; bool m_recode; public: - textsubs_packetizer_c(generic_reader_c *p_reader, track_info_c &p_ti, const char *codec_id, const void *global_data, int global_size, bool recode, bool is_utf8); + textsubs_packetizer_c(generic_reader_c *p_reader, track_info_c &p_ti, const char *codec_id, bool recode, bool is_utf8); virtual ~textsubs_packetizer_c(); virtual int process(packet_cptr packet); diff --git a/src/output/p_theora.cpp b/src/output/p_theora.cpp index a900a5090..800ce5ad7 100644 --- a/src/output/p_theora.cpp +++ b/src/output/p_theora.cpp @@ -51,11 +51,10 @@ theora_video_packetizer_c::process(packet_cptr packet) { void theora_video_packetizer_c::extract_aspect_ratio() { - if (display_dimensions_or_aspect_ratio_set() || !m_ti.m_private_data || (0 == m_ti.m_private_size)) + if (display_dimensions_or_aspect_ratio_set() || !m_ti.m_private_data || (0 == m_ti.m_private_data->get_size())) return; - memory_cptr private_data = memory_cptr(new memory_c(m_ti.m_private_data, m_ti.m_private_size, false)); - std::vector packets = unlace_memory_xiph(private_data); + auto packets = unlace_memory_xiph(m_ti.m_private_data); for (auto &packet : packets) { if ((0 == packet->get_size()) || (THEORA_HEADERTYPE_IDENTIFICATION != packet->get_buffer()[0])) diff --git a/src/output/p_truehd.cpp b/src/output/p_truehd.cpp index 95332a2d3..06c7c2fda 100644 --- a/src/output/p_truehd.cpp +++ b/src/output/p_truehd.cpp @@ -16,8 +16,8 @@ #include "common/hacks.h" #include "common/matroska.h" #include "common/truehd.h" +#include "merge/connection_checks.h" #include "merge/output_control.h" -#include "merge/pr_generic.h" #include "output/p_truehd.h" using namespace libmatroska; diff --git a/src/output/p_tta.cpp b/src/output/p_tta.cpp index 685f0a795..0370cbf64 100644 --- a/src/output/p_tta.cpp +++ b/src/output/p_tta.cpp @@ -16,6 +16,7 @@ #include "common/math.h" #include "common/matroska.h" #include "common/tta.h" +#include "merge/connection_checks.h" #include "output/p_tta.h" using namespace libmatroska; diff --git a/src/output/p_vc1.cpp b/src/output/p_vc1.cpp index 9b2c4ce23..3a2473287 100644 --- a/src/output/p_vc1.cpp +++ b/src/output/p_vc1.cpp @@ -88,7 +88,7 @@ vc1_video_packetizer_c::set_headers() { } else set_track_default_duration(1000000000ll * 1001 / 30000); - set_codec_private(buf->get_buffer(), buf->get_size()); + set_codec_private(buf); generic_packetizer_c::set_headers(); diff --git a/src/output/p_video.cpp b/src/output/p_video.cpp index 9abc273c6..ccb243036 100644 --- a/src/output/p_video.cpp +++ b/src/output/p_video.cpp @@ -19,7 +19,7 @@ #include "common/math.h" #include "common/matroska.h" #include "common/mpeg4_p2.h" -#include "merge/output_control.h" +#include "merge/connection_checks.h" #include "output/p_video.h" #include @@ -49,7 +49,7 @@ video_packetizer_c::video_packetizer_c(generic_reader_c *p_reader, else set_codec_id(MKV_V_MSCOMP); - set_codec_private(m_ti.m_private_data, m_ti.m_private_size); + set_codec_private(m_ti.m_private_data); check_fourcc(); } @@ -57,16 +57,16 @@ void video_packetizer_c::check_fourcc() { if ( (m_hcodec_id != MKV_V_MSCOMP) || !m_ti.m_private_data - || (sizeof(alBITMAPINFOHEADER) > m_ti.m_private_size)) + || (sizeof(alBITMAPINFOHEADER) > m_ti.m_private_data->get_size())) return; if (!m_ti.m_fourcc.empty()) { - memcpy(&((alBITMAPINFOHEADER *)m_ti.m_private_data)->bi_compression, m_ti.m_fourcc.c_str(), 4); - set_codec_private(m_ti.m_private_data, m_ti.m_private_size); + memcpy(&reinterpret_cast(m_ti.m_private_data->get_buffer())->bi_compression, m_ti.m_fourcc.c_str(), 4); + set_codec_private(m_ti.m_private_data); } char fourcc[5]; - memcpy(fourcc, &((alBITMAPINFOHEADER *)m_ti.m_private_data)->bi_compression, 4); + memcpy(fourcc, &reinterpret_cast(m_ti.m_private_data->get_buffer())->bi_compression, 4); fourcc[4] = 0; if (mpeg4::p2::is_v3_fourcc(fourcc)) diff --git a/src/output/p_vobbtn.cpp b/src/output/p_vobbtn.cpp index 9c8e61d79..c0cda373a 100644 --- a/src/output/p_vobbtn.cpp +++ b/src/output/p_vobbtn.cpp @@ -20,6 +20,7 @@ #include "common/endian.h" #include "common/matroska.h" #include "common/mm_io.h" +#include "merge/connection_checks.h" #include "output/p_vobbtn.h" using namespace libmatroska; diff --git a/src/output/p_vobsub.cpp b/src/output/p_vobsub.cpp index 999469f55..dca8f16f9 100644 --- a/src/output/p_vobsub.cpp +++ b/src/output/p_vobsub.cpp @@ -23,12 +23,9 @@ using namespace libmatroska; -vobsub_packetizer_c::vobsub_packetizer_c(generic_reader_c *_reader, - const void *_idx_data, - int _idx_data_size, - track_info_c &_ti) - : generic_packetizer_c(_reader, _ti) - , idx_data(new memory_c((unsigned char *)safememdup(_idx_data, _idx_data_size), _idx_data_size, true)) +vobsub_packetizer_c::vobsub_packetizer_c(generic_reader_c *reader, + track_info_c &ti) + : generic_packetizer_c(reader, ti) { set_track_type(track_subtitle); set_default_compression_method(COMPRESSION_ZLIB); @@ -40,7 +37,7 @@ vobsub_packetizer_c::~vobsub_packetizer_c() { void vobsub_packetizer_c::set_headers() { set_codec_id(MKV_S_VOBSUB); - set_codec_private(idx_data->get_buffer(), idx_data->get_size()); + set_codec_private(m_ti.m_private_data); generic_packetizer_c::set_headers(); diff --git a/src/output/p_vobsub.h b/src/output/p_vobsub.h index 3ffc81a85..2c33247d3 100644 --- a/src/output/p_vobsub.h +++ b/src/output/p_vobsub.h @@ -20,11 +20,8 @@ #include "merge/pr_generic.h" class vobsub_packetizer_c: public generic_packetizer_c { -private: - memory_cptr idx_data; - public: - vobsub_packetizer_c(generic_reader_c *_reader, const void *_idx_data, int _idx_data_size, track_info_c &_ti); + vobsub_packetizer_c(generic_reader_c *reader, track_info_c &ti); virtual ~vobsub_packetizer_c(); virtual int process(packet_cptr packet); diff --git a/src/output/p_vorbis.cpp b/src/output/p_vorbis.cpp index 0793a14f7..84b7ba095 100644 --- a/src/output/p_vorbis.cpp +++ b/src/output/p_vorbis.cpp @@ -17,6 +17,7 @@ #include #include "common/matroska.h" +#include "merge/connection_checks.h" #include "merge/output_control.h" #include "output/p_vorbis.h" @@ -76,8 +77,7 @@ vorbis_packetizer_c::set_headers() { set_codec_id(MKV_A_VORBIS); - memory_cptr codec_private = lace_memory_xiph(m_headers); - set_codec_private(codec_private->get_buffer(), codec_private->get_size()); + set_codec_private(lace_memory_xiph(m_headers)); set_audio_sampling_freq((float)m_vi.rate); set_audio_channels(m_vi.channels); diff --git a/src/output/p_vp8.cpp b/src/output/p_vp8.cpp index 25485a194..12fe34fc5 100644 --- a/src/output/p_vp8.cpp +++ b/src/output/p_vp8.cpp @@ -15,6 +15,7 @@ #include "common/ivf.h" #include "common/matroska.h" +#include "merge/connection_checks.h" #include "output/p_vp8.h" using namespace libmatroska; diff --git a/src/output/p_wavpack.cpp b/src/output/p_wavpack.cpp index 4b38e6140..cbec0b055 100644 --- a/src/output/p_wavpack.cpp +++ b/src/output/p_wavpack.cpp @@ -16,6 +16,7 @@ #include "common/endian.h" #include "common/math.h" #include "common/matroska.h" +#include "merge/connection_checks.h" #include "output/p_wavpack.h" using namespace libmatroska; @@ -37,7 +38,7 @@ wavpack_packetizer_c::wavpack_packetizer_c(generic_reader_c *p_reader, void wavpack_packetizer_c::set_headers() { set_codec_id(MKV_A_WAVPACK4); - set_codec_private(m_ti.m_private_data, m_ti.m_private_size); + set_codec_private(m_ti.m_private_data); set_audio_sampling_freq((float)m_sample_rate); set_audio_channels(m_channels); set_audio_bit_depth(m_bits_per_sample);