การอ้างอิงโครงสร้าง audio_stream_out

การอ้างอิงโครงสร้าง audio_stream_out

#include < audio.h >

เขตข้อมูล

โครงสร้าง audio_stream ทั่วไป
uint32_t(* get_latency ) (สร้าง struct audio_stream_out * สตรีม)
อินท์(* set_volume )(struct audio_stream_out *สตรีม, ลอยไปทางซ้าย, ลอยไปทางขวา)
ssize_t(*) เขียน )(struct audio_stream_out *stream, const void *buffer, size_t bytes)
อินท์(* get_render_position ) (const struct audio_stream_out * สตรีม, uint32_t * dsp_frames)
อินท์(* get_next_write_timestamp ) (const struct audio_stream_out * สตรีม, int64_t * การประทับเวลา)
อินท์(* set_callback ) (struct audio_stream_out * สตรีม, การโทรกลับ stream_callback_t , เป็นโมฆะ * คุกกี้)
อินท์(* หยุดชั่วคราว )(struct audio_stream_out *stream)
อินท์(* ดำเนินการต่อ )(struct audio_stream_out *stream)
อินท์(* ท่อระบายน้ำ ) (struct audio_stream_out * สตรีม, ประเภท audio_drain_type_t )
อินท์(* ล้าง )(struct audio_stream_out *stream)
อินท์(* get_presentation_position )(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp)

คำอธิบายโดยละเอียด

audio_stream_out เป็นอินเทอร์เฟซนามธรรมสำหรับฮาร์ดแวร์เอาต์พุตเสียง

โดยให้ข้อมูลเกี่ยวกับคุณสมบัติต่างๆ ของไดรเวอร์ฮาร์ดแวร์เอาต์พุตเสียง

คำจำกัดความที่บรรทัด 276 ของไฟล์ audio.h

เอกสารภาคสนาม

struct audio_stream ทั่วไป

วิธีการทั่วไปในการสตรีมเสียงออก นี่ จะต้อง เป็นสมาชิกคนแรกของ audio_stream_out เนื่องจากผู้ใช้โครงสร้างนี้จะส่งตัวชี้ audio_stream ไปยัง audio_stream_out ในบริบทที่ทราบว่า audio_stream อ้างอิงถึง audio_stream_out

คำจำกัดความที่บรรทัด 282 ของไฟล์ audio.h

int (* ท่อระบายน้ำ) (struct audio_stream_out * สตรีม, ประเภท audio_drain_type_t )

ร้องขอการแจ้งเตือนเมื่อมีการเล่นข้อมูลที่บัฟเฟอร์โดยไดรเวอร์/ฮาร์ดแวร์ หากก่อนหน้านี้ set_callback() ถูกเรียกเพื่อเปิดใช้งานโหมดที่ไม่ปิดกั้น ท่อระบายน้ำ () จะต้องไม่ปิดกั้น แต่ควรกลับมาอย่างรวดเร็วแทน และการแจ้งเตือนความสมบูรณ์ของท่อระบายน้ำจะได้รับแจ้งผ่านการเรียกกลับ หากไม่ได้เรียก set_callback() ท่อ ระบายน้ำ () จะต้องบล็อกจนกว่าจะเสร็จสิ้น หาก type==AUDIO_DRAIN_ALL ระบบระบายจะเสร็จสมบูรณ์เมื่อมีการเล่นข้อมูลที่เขียนไว้ก่อนหน้านี้ทั้งหมด หาก type==AUDIO_DRAIN_EARLY_NOTIFY การระบายจะเสร็จสมบูรณ์ในไม่ช้าก่อนที่ข้อมูลทั้งหมดสำหรับแทร็กปัจจุบันจะเล่น เพื่อให้มีเวลาสำหรับเฟรมเวิร์กในการดำเนินการสลับแทร็กแบบไม่มีช่องว่าง

ท่อระบายน้ำจะต้องกลับมาทันทีเมื่อหยุด () และ ล้าง () โทร

การใช้งานฟังก์ชันนี้จำเป็นสำหรับการเล่นแบบออฟโหลด

คำจำกัดความที่บรรทัด 372 ของไฟล์ audio.h

int(* ล้าง) (struct audio_stream_out * สตรีม)

แจ้งไปยังไดรเวอร์เสียงเพื่อล้างข้อมูลที่อยู่ในคิว สตรีมต้องถูกหยุดชั่วคราวก่อนที่จะเรียก flush()

การใช้งานฟังก์ชันนี้จำเป็นสำหรับการเล่นแบบออฟโหลด

คำจำกัดความที่บรรทัด 380 ของไฟล์ audio.h

uint32_t(* get_latency)(const struct audio_stream_out *สตรีม)

ส่งกลับเวลาแฝงโดยประมาณของไดรเวอร์ฮาร์ดแวร์เสียงในหน่วยมิลลิวินาที

คำจำกัดความที่บรรทัด 287 ของไฟล์ audio.h

int (* get_next_write_timestamp) (const struct audio_stream_out * สตรีม, int64_t * การประทับเวลา)

รับเวลาท้องถิ่นที่จะนำเสนอการเขียนครั้งต่อไปไปยังไดรเวอร์เสียง หน่วยเป็นไมโครวินาที โดยที่ยุคจะถูกกำหนดโดย HAL เสียงในเครื่อง

คำจำกัดความที่บรรทัด 324 ของไฟล์ audio.h

int(* get_presentation_position)(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp)

ส่งกลับการนับล่าสุดของจำนวนเฟรมเสียงที่แสดงต่อผู้สังเกตการณ์ภายนอก นี่ไม่รวมเฟรมที่ถูกเขียนแต่ยังอยู่ในขั้นตอนการทำงาน การนับจะไม่รีเซ็ตเป็นศูนย์เมื่อเอาต์พุตเข้าสู่โหมดสแตนด์บาย ส่งคืนค่า CLOCK_MONOTONIC ณ จำนวนการนำเสนอนี้ด้วย จำนวนที่ส่งคืนคาดว่าจะเป็น 'ล่าสุด' แต่ไม่จำเป็นต้องเป็นค่าล่าสุดที่เป็นไปได้ อย่างไรก็ตาม เวลาที่เกี่ยวข้องควรสอดคล้องกับจำนวนที่ส่งคืน ตัวอย่าง: สมมติว่ามีการนำเสนอเฟรม N+M โดยที่ M คือตัวเลข 'น้อย' จากนั้น อนุญาตให้ส่งคืน N แทน N+M และการประทับเวลาควรสอดคล้องกับ N แทนที่จะเป็น N+M คำว่า 'ล่าสุด' และ 'เล็ก' ไม่ได้ถูกกำหนดไว้ สะท้อนถึงคุณภาพของการนำไปปฏิบัติ

3.0 และสูงกว่าเท่านั้น

คำจำกัดความที่บรรทัด 398 ของไฟล์ audio.h

int(* get_render_position)(const struct audio_stream_out *สตรีม, uint32_t *dsp_frames)

คำจำกัดความที่บรรทัด 317 ของไฟล์ audio.h

int(* หยุดชั่วคราว) (struct audio_stream_out * สตรีม)

แจ้งเตือนไปยังไดรเวอร์เสียงเพื่อหยุดการเล่น อย่างไรก็ตาม บัฟเฟอร์ที่อยู่ในคิวจะยังคงอยู่โดยฮาร์ดแวร์ มีประโยชน์สำหรับการดำเนินการหยุดชั่วคราว/ดำเนินการต่อ การใช้งานที่ว่างเปล่าหากไม่ได้รับการสนับสนุน อย่างไรก็ตาม ควรนำไปใช้กับฮาร์ดแวร์ที่มีเวลาแฝงที่ไม่สำคัญ ในสถานะหยุดชั่วคราว ฮาร์ดแวร์เสียงอาจยังคงใช้พลังงานอยู่ ผู้ใช้อาจพิจารณาการโทรระงับหลังจากหมดเวลา

การใช้งานฟังก์ชันนี้จำเป็นสำหรับการเล่นแบบออฟโหลด

คำจำกัดความที่บรรทัด 345 ของไฟล์ audio.h

int(* เรซูเม่) (struct audio_stream_out * สตรีม)

แจ้งเตือนไดรเวอร์เสียงให้เล่นต่อหลังจากหยุดชั่วคราว ส่งคืนข้อผิดพลาดหากถูกเรียกโดยไม่หยุดการจับคู่

การใช้งานฟังก์ชันนี้จำเป็นสำหรับการเล่นแบบออฟโหลด

คำจำกัดความที่บรรทัด 353 ของไฟล์ audio.h

int (* set_callback) (struct audio_stream_out * สตรีม, การโทรกลับ stream_callback_t , เป็นโมฆะ * คุกกี้)

ตั้งค่าฟังก์ชันการโทรกลับเพื่อแจ้งเสร็จสิ้นการเขียนและระบายแบบไม่บล็อก การเรียกใช้ฟังก์ชันนี้หมายความว่า การเขียน () และ ท่อระบายน้ำ () ในอนาคตทั้งหมดจะต้องไม่ถูกบล็อกและใช้การโทรกลับเพื่อส่งสัญญาณให้เสร็จสิ้น

คำจำกัดความที่บรรทัด 333 ของไฟล์ audio.h

int(* set_volume)(struct audio_stream_out *stream, ลอยไปทางซ้าย, ลอยไปทางขวา)

ใช้วิธีนี้ในสถานการณ์ที่มีการผสมเสียงในฮาร์ดแวร์ วิธีการนี้ทำหน้าที่เป็นอินเทอร์เฟซโดยตรงกับฮาร์ดแวร์ ทำให้คุณสามารถตั้งค่าระดับเสียงได้โดยตรงตามที่กำหนดผ่านเฟรมเวิร์ก วิธีนี้อาจสร้างเอาต์พุต PCM หลายตัวหรือตัวแปลงสัญญาณที่เร่งด้วยฮาร์ดแวร์ เช่น MP3 หรือ AAC

คำจำกัดความที่บรรทัด 296 ของไฟล์ audio.h

ssize_t(* เขียน)(struct audio_stream_out *stream, const void *buffer, size_t bytes)

เขียนบัฟเฟอร์เสียงไปยังไดรเวอร์ ส่งกลับจำนวนไบต์ที่เขียน หรือสถานะติดลบ_t หากมีการเขียนอย่างน้อยหนึ่งเฟรมสำเร็จก่อนที่จะเกิดข้อผิดพลาด ขอแนะนำให้ไดรเวอร์ส่งคืนจำนวนไบต์ที่สำเร็จ (แบบสั้น) แล้วส่งคืนข้อผิดพลาดในการเรียกครั้งต่อไป

หากก่อนหน้านี้ set_callback() ถูกเรียกให้เปิดใช้งานโหมดที่ไม่ปิดกั้น การเขียน () จะไม่ได้รับอนุญาตให้บล็อก จะต้องเขียนเฉพาะจำนวนไบต์ที่พอดีกับบัฟเฟอร์ไดรเวอร์/ฮาร์ดแวร์ในปัจจุบัน จากนั้นจึงส่งคืนจำนวนไบต์นี้ หากน้อยกว่าขนาดการเขียนที่ร้องขอ จะต้องเรียกใช้ฟังก์ชันการเรียกกลับเมื่อมีเนื้อที่ว่างเพิ่มเติมในบัฟเฟอร์ไดรเวอร์/ฮาร์ดแวร์

คำจำกัดความที่บรรทัด 311 ของไฟล์ audio.h


เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้:
  • ฮาร์ดแวร์ / libhardware / รวม / ฮาร์ดแวร์ / audio.h