valer_valer כתב:
ממשק ה - ASIO , (הCOM המעצבן ההוא שלו) מכתיב לך עומק הביטים פר ערוץ. בד׳׳כ זה או המקסימום שהממיר תומך, או סתם (נאמר 32 ביט מלא) שנוח לדרייבר להמיר למה שהממיר יודע לתמוך ( תלוי מימוש ).
בניגוד WDM דרייבר, אתה לא יכול לקבל תמיכה נגיד ב 16 ו - (פעם אחרת) ב - 24 , שהממיר בפועל תומך ..
הייתה שם מטודה שמחזירה לך ברזל פר ערוץ .. זה לפחות מה שאני זוכר שהיה כשהתעסקתי עם זה ..
זה תומך ב- 16 ו- 24 יפה מאוד (וביט פרפקט), פשוט הפריים תמיד 32 ביט, ואתה ממלא אותו ב- most significant bits עם מה שיש לך.
כלומר אם יש לך מקור של 16 ביט, אתה שם אותם בחלק ה"חשוב" של ה- 32 ביט. אבל בגלל שאתה גם אומר לדרייבר שיש לך רק 16 ביט, אין פה שום אקסטרפוליישן או חישוב.
לגבי פלאק, FFMPEG זה לא דיקודר ספציפי לפלאק, אז הגיוני שיעשו שם נירמול שיעבוד כמו שאר הדיקודרים.
אני דיברתי על זה:
https://xiph.org/flac/documentation.htmlאתה יכול למצוא שם את זה:
קוד:
::FLAC__StreamDecoderWriteStatus write_callback_ (const ::FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data)
זה ה- callback שאתה מקבל על תוצאות הפענוח, וכמו שאתה יכול לראות התשובה מגיעה בפריימים של int32.