הסבר כללי וטכני על פרוטוקל ה SPDIF ובכלל מי נגד מי

תוכנות ניהול מדיה: KODI, תוספים, XBMC, Media Portal, PLEX וכו'
osherov פותח השרשור
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #1 

אני יחלק את הנושא לשלושה חלקים
א. מה זה בכלל SPDIF ?
ב. איך המחשב בכלל ואיך כרטיסי הקול בפרט מתמודדים עם SPDIF
ג. ספציפית איך כל זה מתחבר לנו להגדרות הקיימות בפילטר ה AC3Filter הכל כך המפורסם


חלק ראשון: מה זה בכלל SPDIF ?

הגדרה (חצי מילונית):

SPDIF (נכתב גם כ S/PDIF) – זהו פרוטוקול שנוצר לצורך העברת נתוני אודיו על תווך דיגיטלי. הפרוטוקול מגדיר את שכבת הקו
(Data Link Layer protocol) כלומר מגדיר ממש את מעבר הביטים בין שתי תחנות ומכך גם נגזרת הגדרה לשכבה הפיסקלית
(Physical layer) שכבר ממש מגדיר את הכבל לשימוש בפרוטוקול זה וכו

איך הכל התחיל:

בתחילת הדרך SPDIF (ראשי תיבות של Sony/Philips Digital Interconnect Format) נוצר רק כדי לתת פתרון של העברת 2 ערוצי אודיו (Stereo PCM) בצורה דיגיטלית ממכשיר אחד למכשיר אחר (לדוגמה העברת אודיו מנגן CD לרסיבר).
פרוטוקול זה מאוד פשוט ואמר בעצם שדגימות האודיו ישלחו בתדר קבוע, דגימה אחרי דגימה (ביט אחרי ביט).
כל דגימה כזאת היא בגודל של 32 ביט (4 בתים) כאשר 8 ביטים מתוך ה 32 משמשים לצורך סינכרון וכך 24 ביטים נשארים לדגימת הקול עצמה. ברוב המקרים הדגימה תהיה בגודל של 16 ביט. במקרה זה 8 הביטים הנוספים תמיד יהיו שווים ל 0 (זה תמיד יהיה ה Low Byte).
מצד אחד הגדרות אלו מאוד מגבילות (חובה על הביטרייט להיות קבוע, אין אפשרות לעשות סינכרוניזציה בין ערוצים וכו) ומהצד השני פרוטוקול זה מאוד נפוץ ויחסית מאוד זול לשימוש ומימוש.

ואז פתאום הגיע האודיו הרב ערוצי לקלנוע הביתי:

לכן ברגע שעולם הסראונד (מספר רב של ערוצי אודיו) נכנס לתחום הקולנוע הביתי ה SPDIF היה המעומד המתאים ביותר כדי להשתמש בו להעברת אודיו רב ערוצי בצורה דיגיטלית.כאן נוצרה בעייה. הממשק הנוכחי משתמש רק בדגימות 16 ביט PCM (נתונים לא דחוסים) אבל עכשיו צריך להעביר עד 6 ערוצים.

אז איך עושים את זה ?

בגלל הרצון לשמור על תמיכה לאחור הוחלט לא לשנות את הממשק אלא לשדר נתונים דחוסים של מספר ערוצי אודיו במקום שידור ה PCM הלא דחוס (שימו לב שלממשק הדיגיטלי זה לא משנה מה התוכן המשודר מכיוון שהוא סתאם משדר רצף של 0-ים ו 1-ים).
עכשיו מה שנשאר ליחידות הקצה לעשות (לדוגמה רסיברים) זה לזהות את הנתונים החדשים ולפענח אותם וכך נוצר סטנדרט חדש שתיאר איך נתונים דחוסים צריכים להיות משודרים ואיך יחידות הקצה יבדילו בין נתונים דחוסים לנתונים לא דחוסים (לדוגמה בין PCM ו AC3)
בגלל שהנתונים הדחוסים משודרים במקום נתוני ה PCM סטריאו הלא דחוסים הביטרייט חייב להישאר אותו הדבר.
שימו לב שרוב הערוצים הדחוסים צורכים פחות ביטרייט מאשר נתוני 16-ביט לא דחוסים !!
בגלל זה לנתונים הדחוסים לעיתים חייבים להוסיף 0-ים כדי שיהיו באותו קצב השידור.

הבעייה הגדולה:

במידה והנתונים הדחוסים הם בביטרייט גבוה יותר אין אפשרות לשדרם דרך שימוש ב SPDIF !!!
זאת הסיבה שכל פורמטי האודיו החדשים לא יכולים להשתמש בתווך ה SPDIF להעברת הערוץ ולכן חייבים למצוא תווך אחר (כגון HDMI)

לסיכום החלק ראשון:

ישנם שני ממשקי SPDIF:
1. העברת שני ערוצים לא דחוסים (PCM Stereo)
2. העברת מספר ערוצי אודיו דחוסים (כגון AC3 ו DTS)

יחידות הקצה שתומכות בכך יודעות לזהות האם הערוץ דחוס או לא ואז הם יודעות האם צריך לפענח את הערוץ או לא

AviBiton
סמל אישי של משתמש
גורו HTmobile
גורו HTmobile
תגובות: 17346
הצטרף: אפריל 2005
מיקום: קרית שמונה
נתן תודות: 503 פעמים
קיבל תודות: 358 פעמים

שליחה #2 

(Y)
יפה מאד,כל הכבוד, מחכה להמשך...

MetalliJoe
סמל אישי של משתמש
חבר מביא חבר
חבר מביא חבר
תגובות: 3756
הצטרף: אוקטובר 2006
נתן תודות: 8 פעמים
קיבל תודות: 4 פעמים

שליחה #3 

באמת כל הכבוד! (Y)
Silence speaks louder than words

InbarHovav
סמל אישי של משתמש
חבר מביא חבר
חבר מביא חבר
תגובות: 3252
הצטרף: מרץ 2007
מיקום: נתניה
נתן תודות: 0
קיבל תודות: 2 פעמים

שליחה #4 

OK, אבל בפועל לא הבנתי אם יש הבדל בין כרטיס SPDIF 5.1 לבין SPDIF 7.1,

ומה ההבדל בין 16 ביט ל24 ביט?

האם כרטיס שכתוב עליו 5.1 16 ביט SPDIF, בעצם שווה ערך ל24 ביט 7.1 SPDIF - כי שניהם הם SPDIF והתקן יכול להעביר כל דבר?
"צליל אחד שווה אלף מילים אבל אלף מילים לא יפיקו צליל אחד"

כי החיוך, המבט והטבעיות שבך (כמה שזה לא פרודוקסלי, את יותר "טבעית" מרוב של האנשים) - אז כל אלה עושים אותך יותר יפה מדוגמניות משעממות

truejoker
חבר מכור קשה
חבר מכור קשה
תגובות: 5738
הצטרף: יולי 2007
נתן תודות: 72 פעמים
קיבל תודות: 52 פעמים

שליחה #5 

כול הכבוד , אבל אם אפשר להוסיף גם , למה בעצם אתה צריך סינכרוניזציה אם ה8 ביטים מהווים את השעון של הDATA ? הרי אם אני דוגם בשבריר שניה X והמספר הוא למשל :שעה:דקה:שניה:מילישניה , אזי למעשה יש לי ביט אחד של צד ימין , אני צריך לקבל ביט אחר של צד שמאל עם אותו זמן , ואז אני שולח אותם לDAC/מפענח שיכול לסנכרן אותם לשעון הפנימי או שיכול להשתמש בשעון המובנה .

אז אם כך למה בDAC למשל צריך לסנכרן עם המחשב ?
או ששמא לא הבנתי משהו

osherov פותח השרשור
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #6 

אתם מקדימים את המאוחר:
truejoker כתב: למה בעצם אתה צריך סינכרוניזציה אם ה8 ביטים מהווים את השעון של הDATA ? הרי אם אני דוגם בשבריר שניה X והמספר הוא למשל :שעה:דקה:שניה:מילישניה , אזי למעשה יש לי ביט אחד של צד ימין , אני צריך לקבל ביט אחר של צד שמאל עם אותו זמן , ואז אני שולח אותם לDAC/מפענח שיכול לסנכרן אותם לשעון הפנימי או שיכול להשתמש בשעון המובנה .
...
לא רציתי לצלול כל כך עמוק לפרוטוקול אבל אין ברירה :(
ה 8 ביטים עליהם דיברתי (לצורך סנכרון) לא מעבירים דגימת שעון !
מה שעוד יותר מעניין זה שבשום מקום בפרוטוקול בכלל לא מוגדר מהו קצב השידור ולכן נתון זה לא משודר בכלל !! (ראה הערה בסוף)

אם נצלול קצת לעומק ה 8 ביטים האלה ממוקמים בשתי מקומות בדגימת האודיו (תזכרו שהיא בגודל 32 ביט)
-ביטים 1-4 (ה 4 ביטים הראשונים בדגימה) : אחראים על שידור של רצף מוגדר של ביטים שתלויים בדגימות הקודמות וזה נעשה לצורך זיהוי תחילת הדגימה וזיהוי יציאה מסנכרון

-ביט 29-32 (ה 4 ביטים האחרונים בדגימה) : שכל אחד מהם מעביר סטטוס לגבי הדגימה
כגון ביט parity לזיהוי תקלות וביט validity שמגדיר ליחידה המפענחת האם ניתן לקודד דגימה זאת או לא וכו

כדי לבלבל עוד יותר אז העסק קצת יותר מסובך משליחה של דגימה אחרי דגימה אלא
יש הפרדה לאלמנטים שנקראים frames (יש 192 בבלוק אחד) ובכל פריים יש הפרדה ל 2 אלמנטים שנקראים channels (הימני והשמאלי) וכל channel כזה מכיל את אותם 32 ביטים עליהם אנחנו מדברים (כמו שאמרתי פשוט להבנה זה לא)

הערה:
כמו שנאמר יחידת הקצה (כגון הרסיבר) אמורה לזהות את קצב השידור (שממנו נגזר מהו קצב הדגימות לשנייה) וזה נושא מרתק בפני עצמו (שאני אומנם פחות מתמצא בו) והוא איך מזהים מהו קצב השידור האמיתי ע"י מציאת מעברים של 0 ו 1 על הסיגנל (ב SPDIF יש שימוש בקידוד שנקרא biphase mark code שמאפשר עזרה, תיקון וזיהוי הקצב האמיתי של השידור)
אם יש פה מישהו שמכיר את זה אני אשמח לשמוע הסבר מלומד על איך זה בדיוק עובד

(אני מקווה שכל הקוראים לא נרדמו באמצע :( )
נערך לאחרונה על ידי osherov ב 14/02/2008 16:35, נערך פעם 1 בסך הכל.

osherov פותח השרשור
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #7 

אתם מקדימים את המאוחר והורסים לי את החלק השני של המאמר שאמור לטפל ולדבר על איך כרטיסי הקול מטפלים ב SPDIF :D
עכשיו ברצינות:
InbarHovav כתב:OK, אבל בפועל לא הבנתי אם יש הבדל בין כרטיס SPDIF 5.1 לבין SPDIF 7.1,

ומה ההבדל בין 16 ביט ל24 ביט?

האם כרטיס שכתוב עליו 5.1 16 ביט SPDIF, בעצם שווה ערך ל24 ביט 7.1 SPDIF - כי שניהם הם SPDIF והתקן יכול להעביר כל דבר?
...
אין לי תשובה חד משמעית מכיוון שכמדומני (שמישהו יתקן אותי אם אני טועה) SPDIF לא מגדיר ולא רושם בשום מקום מהם כמות הערוצים בנתונים דחוסים (כגון AC3, DTS וכנראה גם DTS-ES) הוא רק מגדיר שהנתונים הם דחוסים ולכן הכרטיס פשוט אמור להעביר אותם הלאה לרסיבר. זה קצת יותר טריקי כי חלק מכרטיסי הקול מוגבלים בקצב הדגימות ביציאת ה SPDIF ולכן לעיתים הם לא יצליחו להעביר בכלל ערוץ מקודד (לדוגמא כרטיס קול שתומך רק בשידור 48KHz מקבל ערוץ מקודד של AC3 שמוגדר כולו בקצב של 44.1KHz ! במקרה זה הכרטיס לא יהיה מסוגל לשדר את הערוץ ליחידת הקצה)

לכן על פניו אני לא מבין מה זה משנה לכרטיס שאתה מעביר ערוץ מקודד של 5.1 או 7.1 או 100.1 ?! זה אמור לעניין רק את יחידת הקצה באם היא מסוגלת לפענח את התוכן המקודד
כנ"ל לגבי 16 ביט או 24 ביט (למרות שכאן כמובן יש חשיבות לגודל הדגימה במידה ואתה משתמש ביציאות והכניסות האנלוגיות של הכרטיס שזה אמור לשפר את איכות הקול !!)
אני חייב לציין שאני אף פעם לא שידרתי יותר מ 5.1 דרך יציאת ה SPDIF ולכן אני אשמח לקבל דגימה של DTS-ES כדי לבדוק עניין זה ולראות אולי האם יש פה משהו שאני מפספס או לא מכיר

אגב ענבר כמו שרשמת תקן ה SPDIF באמת יכול להעביר כל דבר במידה ואין חריגה מקצב השידור המקסימלי

Catskinner
סמל אישי של משתמש
חבר במועדון HT
חבר במועדון HT
תגובות: 16019
הצטרף: נובמבר 2006
מיקום: הוד השרון
נתן תודות: 123 פעמים
קיבל תודות: 940 פעמים

שליחה #8 

InbarHovav כתב:OK, אבל בפועל לא הבנתי אם יש הבדל בין כרטיס SPDIF 5.1 לבין SPDIF 7.1,

ומה ההבדל בין 16 ביט ל24 ביט?

האם כרטיס שכתוב עליו 5.1 16 ביט SPDIF, בעצם שווה ערך ל24 ביט 7.1 SPDIF - כי שניהם הם SPDIF והתקן יכול להעביר כל דבר?
...
ההבדל בין 16 ל 24 ביט הוא ש S/PDIF מאפשר 16bit עבור מוזיקה מ CD או DVD במקצבים של 44.1 או 48Khz ועד ל 24bit 96Khz - שזה טוב בעיקר למי שיוצר מוזיקה כי זה תומך רק בשני ערוצים.

המבוכה שלך אולי נגרמת מכך שכרטיסי קול מפרסמים את כל התכונות שלהם בסל אחד. אם תעייני במקרה בספר המשתמש של כרטיס מהדור האחרון - נקח לדוגמה את ה Auzentech Explosion 7.1 DTS Connect , תוכלי לראות שהוא אומנם מסוגל להוציא 7.1 ערוצים ב S/PDIF אבל רק אם הם באים מקודדים מראש ב DTS-ES או PLIIx שאלו הם ערוצי matrix או שהוא מבצע את הקידוד בעצמו דרך DTS Connect שזה גם שיטה של Matrix. בקיצור - ההבדל הוא בעיקר במעבד של הכרטיס שאם הוא חזק מספיק הוא גם מאפשר כתיבת דרייברים מתוחכמים יותר שיכולים לזהות ולהעביר פרוטוקולים מתקדמים דרך ה S/PDIF או לבצע קידוד Matrix בחומרה. כרטיסים זולים ופשוטים יותר בד"כ יוגבלו ל Passthrough בלבד ולפורמטים של DD ו DTS הרגילים.

ההבדל האחר בין כרטיסים שמציגים את עצמם כ 7.1 לעומת ה 5.1 בכלל לא קשור ל S/PDIF אלא ליציאות האנלוגיות שלהם. בכרטיסים 7.1 תמצאי עוד זוג יציאות לחיבור הרמקולים האחוריים.

zovirax
סמל אישי של משתמש
חבר במועדון ה-15K
חבר במועדון ה-15K
תגובות: 15945
הצטרף: פברואר 2006
שם מלא: zovirax
נתן תודות: 299 פעמים
קיבל תודות: 330 פעמים

שליחה #9 

יש לי שאלה.
קיימים הפילטרים כמו ה AC3FILTER ו FFDSHOW שהם דואגים להעביר ליציאת SPDIF את ה DATA בביטים (נכון?)
האם הפילטרים האלה מבצעים איזה עיבוד מסויים שמשפיע על הסאונד?

osherov פותח השרשור
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #10 

עכשיו כבר אתה מקדים את היותר מאוחר והורס לי את החלק השלישי של המאמר שאמור לטפל ולדבר על איך הפילטר AC3Filter מטפל ב SPDIF :D
zovirax כתב:יש לי שאלה.
קיימים הפילטרים כמו ה AC3FILTER ו FFDSHOW שהם דואגים להעביר ליציאת SPDIF את ה DATA בביטים (נכון?)
האם הפילטרים האלה מבצעים איזה עיבוד מסויים שמשפיע על הסאונד?
...
ככה כדי להשאיר משהו להמשך אני אומר בקצרה ש:

יש שלושה דרכים בהם הפילטר מטפל ב SPDIF (נניחAC3ׂ):

1. SPDIF passthrough mode - הנתונים המקודדים נשלחים בלי שום שינוי בתוכן המקודד ולכן אין במקרה זה שום עיבוד על הסאונד (אפילו שינוי ווליום לא אפשרי)

2. SPDIF encode mode - במקרה זה הנתונים המקודדים מפוענחים ע"י הפילטר ואז נתונים המפוענחים עוברים עיבודי קול כאלה ואחרים (תלוי בהגדרות) ואז מקודדים מחדש (נניח ל AC3) וכך בם נשלחים ליציאת ה SPDIF (בשימוש כרטיס הקול).
במקרה זה יש כמבן עיבוד של קול וגם יכולה להיות פגיעה במקור !

3. SPDIF encode mode PCM - במקרה זה הנתונים המקודדים מפוענחים ע"י הפילטר ואז נתונים המפוענחים עוברים עיבודי קול כאלה ואחרים (תלוי בהגדרות) ואז מתבצע המרה ל Stereo והנתונים נשלחים על ה SPDIF כנתוני PCM לא דחוסים
(אגב זאת התלונה העיקרית של אנשים שאומרים "אני מנגן 5.1 AC3 או DTS אבל ברסיבר אני מקבל PCM Stereo".

הסבר מעמיק יותר על איך ה AC3Filter עובד ומה משמעות ההגדרות שם אני ירחיב בחלק השלישי של המאמר

MetalliJoe
סמל אישי של משתמש
חבר מביא חבר
חבר מביא חבר
תגובות: 3756
הצטרף: אוקטובר 2006
נתן תודות: 8 פעמים
קיבל תודות: 4 פעמים

שליחה #11 

osherov,

שוב כל הכבוד.

לגבי passthrough - רשמת שאין אפשרות לבצע כל עיבוד, כולל שינוי ווליום, אבל אצלי ה-AC3FILTER נמצא במצב הזה, ובכל זאת ניתן לשלוט בגובה הווליום דרך הנגן (לא שאני משתמש בזה, אבל בכל זאת). איך זה מסתדר?
Silence speaks louder than words

osherov פותח השרשור
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #12 

MetalliJoe כתב:osherov,

שוב כל הכבוד.

לגבי passthrough - רשמת שאין אפשרות לבצע כל עיבוד, כולל שינוי ווליום, אבל אצלי ה-AC3FILTER נמצא במצב הזה, ובכל זאת ניתן לשלוט בגובה הווליום דרך הנגן (לא שאני משתמש בזה, אבל בכל זאת). איך זה מסתדר?
...
תנסה לשחק עם הווליום של ה AC3Filter בזמן ניגון סרט (נניח דרך ה GraphEdit) ותראה האם יש השפעה על הווליום אצלך ברסיבר (כמובן תוודא שהרסיבר רושם שהוא מקבל DD או DTS)
במידה ואין שינוי בווליום אז משמע שמתבצע passthrough מלא מהפילטר של AC3Filter (מקרה 1 שתיארתי בהודעה הקודמת)
במידה ואתה כן מצליח לשמוע את שינוי הווליום אז בהכרח נעשה קידוד מחדש ע"י הפילטר (מצב זה פחות מומלץ)

וזה יכול לנבוע מ 4 סיבות (שאני לפחות מכיר):
1. לא מוגדר passthrough בפילטר לערוץ המקודד (AC3, DTS וכו)
2. קובץ המקור לא מקודד ב AC3 או DTS (נניח שאתה משמיע שיר WAV רגיל) ואז במידה וסימנת את השדה “Use AC3 encoder”
ולא סימנת שדה “Do not encode stereo PCM” במקרה זה יבצע קידוד של נתוני האודיו הלא דחוסים (PCM) ל AC3
3. ה AC3Filter פילטר בודק האם כרטיס הקול מסוגל לשדר את המקור המקודד (האם הוא תומך בתדר הדגימה) במידה ולא אז הוא יכול לבצע קידוד מחדש כדי להמיר את הערוץ המקודד לתדר בו הכרטיס הקול תומך. דוגמה:
הפילטר מקבל ערוץ דחוס של AC3 בתדר של 44.1kHz בבדיקה שהפילטר עושה מול כרטיס הקול הכרטיס מדווח שהוא יודע לשלוח רק תדר של 48kHz במקרה זה (ובמידה וזה מסומן בהגדרות של הפילטר) יתבצע קידוד מחדש מ 44.1kHz ל 48kHz
4. מקרה אחרון שיכול להתרחש קשור לערוץ מקודד שחורג מהביטרייט המוגדר ל SPDIF ואז שוב יתכן קידוד מחדש (שוב זה יכול לקרות ממספר סיבות שאני יפרט אותם בחלק 3)

לסיכום
מצד אחד ל AC3Filter פילטר יש המון אופציות והוא מסוגל לטפל בהמון מקרים (לטעמי הוא הרבה יותר חזק ויעיל מהטיפול של FFDSHOW בכל מה שנוגע לסאנד) מצד שני לעיתים קורא שמתבצעים דברים שאתה לא מבין אותם ואז בלי להיכנס לעובי הקורה קשה לפתור זאת
(ומכאן בדר"כ נובעים כל הבעיות)

אגב,
מקרה 3 הוא הבעייתי ביותר כי במקרה זה קיימת מגבלה של הכרטיס קול !!!

MetalliJoe
סמל אישי של משתמש
חבר מביא חבר
חבר מביא חבר
תגובות: 3756
הצטרף: אוקטובר 2006
נתן תודות: 8 פעמים
קיבל תודות: 4 פעמים

שליחה #13 

1. מוגדר passthrough.

2. מקודד ב-DD/DTS.

3. איך בודקים את יכולת ההעברה של כרטיס הקול (on-board)?

4. קצב שידור רגיל של DD/DTS.
Silence speaks louder than words

mikele
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 171
הצטרף: אפריל 2007
מיקום: כל הזמן בתנועה
נתן תודות: 0
קיבל תודות: 0

שליחה #14 

(Y)
למה לא לפרסם זאת כמאמר לכל דבר ?

osherov פותח השרשור
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #15 

MetalliJoe כתב:1. מוגדר passthrough.

2. מקודד ב-DD/DTS.

3. איך בודקים את יכולת ההעברה של כרטיס הקול (on-board)?

4. קצב שידור רגיל של DD/DTS.
...
3. במידה והפילטר מוציא ערוץ מקודד והרסיבר רושם שהוא מקבל ערוץ מקודד (נניח AC3 או DTS) אז בהכרח כרטיס הקול העביר את השידור בצורה תקינה אבל צריך לוודא שמקרה 3 אותו תיארתי בהודעה הקודמת לא מתבצע בטעות:
3. ה AC3Filter פילטר בודק האם כרטיס הקול מסוגל לשדר את המקור המקודד (האם הוא תומך בתדר הדגימה) במידה ולא אז הוא יכול לבצע קידוד מחדש כדי להמיר את הערוץ המקודד לתדר בו הכרטיס הקול תומך. דוגמה:
הפילטר מקבל ערוץ דחוס של AC3 בתדר של 44.1kHz בבדיקה שהפילטר עושה מול כרטיס הקול הכרטיס מדווח שהוא יודע לשלוח רק תדר של 48kHz במקרה זה (ובמידה וזה מסומן בהגדרות של הפילטר) יתבצע קידוד מחדש מ 44.1kHz ל 48kHz
...
כדי לבדוק את זה צריך להוריד את הסימון “Check output format support” שאומר לפילטר אל תבדוק בכלל האם כרטיס הקול תומך בקצב הדגימות הרלוונטי
עכשיו באם יש עדיין יש סאונד ברסיבר אז הכל תקין אם אין אז....זה כבר נשאיר לפעם הבאה

osherov פותח השרשור
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #16 

mikele כתב:(Y)
למה לא לפרסם זאת כמאמר לכל דבר ?
...
זה התכנון (Y)

OferL
סמל אישי של משתמש
חבר מביא חבר
חבר מביא חבר
תגובות: 3906
הצטרף: אפריל 2006
מיקום: כפר סבא
נתן תודות: 323 פעמים
קיבל תודות: 118 פעמים

שליחה #17 

יופי של מאמר!
מחכה בקוצר רוח להמשך :D
Enjoy the Silence

truejoker
חבר מכור קשה
חבר מכור קשה
תגובות: 5738
הצטרף: יולי 2007
נתן תודות: 72 פעמים
קיבל תודות: 52 פעמים

שליחה #18 

osherov כתב:לא רציתי לצלול כל כך עמוק לפרוטוקול אבל אין ברירה :(
ה 8 ביטים עליהם דיברתי (לצורך סנכרון) לא מעבירים דגימת שעון !
מה שעוד יותר מעניין זה שבשום מקום בפרוטוקול בכלל לא מוגדר מהו קצב השידור ולכן נתון זה לא משודר בכלל !! (ראה הערה בסוף)
(אני מקווה שכל הקוראים לא נרדמו באמצע :( )
...
אני כן נרדמתי :D , אבל לא הבנתי משהו ,אתה יכול להסביר לי מה הרעיון הדפוק הזה גם לא לתת זמן וגם לא לתת קצב ?
osherov כתב:כדי לבלבל עוד יותר אז העסק קצת יותר מסובך משליחה של דגימה אחרי דגימה אלא
יש הפרדה לאלמנטים שנקראים frames (יש 192 בבלוק אחד) ובתוכם יש יש הפרדה ל 2 אלמנטים שנקראים channels (הימני והשמאלי) וכל channel כזה מכיל את אותם 32 ביטים עליהם אנחנו מדברים (כמו שאמרתי פשוט להבנה זה לא)
...
אז איך אתה יודע שאתה מקבל צ'אנל ימין עם צ'אנל שמאל ? כלומר אין לך דגימת שעון , אין לך מיספור של הדגימה, אז מהיכן אתה יודע שבמיליסקונד הזו הימין הזה שווה לשמאל הזה כדי לקבל סטריאו ? אולי הצד הימני מקדים את השמאלי במיליסקונד ?

אני לא מצליח להבין מה כן יש במילה הדפוקה שהם לא מצליחים לתת את המידע הכי נחוץ , הרי מה שצריך זה את הדגימה שזה 16 ביט , את הצ'אנל , ואת הזמן שזה 8 ביט אתה מגיע כך ל 16+8+2=26 עוד 2 למכווץ עוד 2 לשיטת כיווץ ו2 לבדיקת נכונות , אז למה הם לא עשו את זה ומה לכול הרוחות הם כן עשו ?

osherov פותח השרשור
סמל אישי של משתמש
גורו Android
גורו Android
תגובות: 15029
הצטרף: אפריל 2007
נתן תודות: 201 פעמים
קיבל תודות: 513 פעמים

שליחה #19 

אני כן נרדמתי , אבל לא הבנתי משהו ,אתה יכול להסביר לי מה הרעיון הדפוק הזה גם לא לתת זמן וגם לא לתת קצב ?
...
הרי אם קיים מנגנון ביחידת הקצה שידוע לזהות את הקצב אז אין שום סיבה להעביר נתון זה כחלק מהפרוטוקול (שים לב שזה חוסך מקום !!)
אז איך אתה יודע שאתה מקבל צ'אנל ימין עם צ'אנל שמאל ? כלומר אין לך דגימת שעון , אין לך מיספור של הדגימה, אז מהיכן אתה יודע שבמיליסקונד הזו הימין הזה שווה לשמאל הזה כדי לקבל סטריאו ? אולי הצד הימני מקדים את השמאלי במיליסקונד ?
...
כמו שרשמתי יש הפרדה לאלמנטים שנקראים frames (יש 192 בבלוק אחד) ובתוכם לכל פריים יש הפרדה ל 2 אלמנטים שנקראים channels (הימני והשמאלי) וכל channel כזה מכיל את אותם 32 ביטים עליהם אנחנו מדברים

עכשיו נניח שאני יחידת הקצה (רסיבר) ואני כבר גיליתי מהו הקצב ואני מתחיל לקבל פריים, אחרי פריים ובכל פריים אני יודע שיש הפרדה של של שני channels ולכן אני יודע שה 32 ביטים הראשנים שייכים לערוץ A (ערוץ שמאל) ואח"כ מגיעים 32 ביטים נוספים ששייכים לערוץ B (ערוץ ימין) וכך אני פשוט מנגן דגימה מערוץ שמאל ודגימה מערוץ ימין אחד אחרי השני

כמו שאתה רואה אין ליחידת הקצה שום בעייה לפענח את הערוצים ומכיוון שהפרוטוקול כן מגדיר את בפריים את סדר הדגימות (אם אני לא טועה זה שמאל ואח"כ ימין)
אז אין שום בעייה לזהות לאיזה ערוץ שייכת איזה דגימה !!

שלח תגובה

חזור אל “תוכנה - KODI”