Lines Matching refs:pb
50 pa_raop_packet_buffer *pb = pa_xnew0(pa_raop_packet_buffer, 1); in pa_raop_packet_buffer_new() local
55 pb->count = 0; in pa_raop_packet_buffer_new()
56 pb->size = size; in pa_raop_packet_buffer_new()
57 pb->mempool = mempool; in pa_raop_packet_buffer_new()
58 pb->packets = pa_xnew0(pa_memchunk, size); in pa_raop_packet_buffer_new()
59 pb->seq = pb->pos = 0; in pa_raop_packet_buffer_new()
61 return pb; in pa_raop_packet_buffer_new()
64 void pa_raop_packet_buffer_free(pa_raop_packet_buffer *pb) { in pa_raop_packet_buffer_free() argument
67 pa_assert(pb); in pa_raop_packet_buffer_free()
69 for (i = 0; pb->packets && i < pb->size; i++) { in pa_raop_packet_buffer_free()
70 if (pb->packets[i].memblock) in pa_raop_packet_buffer_free()
71 pa_memblock_unref(pb->packets[i].memblock); in pa_raop_packet_buffer_free()
72 pa_memchunk_reset(&pb->packets[i]); in pa_raop_packet_buffer_free()
75 pa_xfree(pb->packets); in pa_raop_packet_buffer_free()
76 pb->packets = NULL; in pa_raop_packet_buffer_free()
77 pa_xfree(pb); in pa_raop_packet_buffer_free()
80 void pa_raop_packet_buffer_reset(pa_raop_packet_buffer *pb, uint16_t seq) { in pa_raop_packet_buffer_reset() argument
83 pa_assert(pb); in pa_raop_packet_buffer_reset()
84 pa_assert(pb->packets); in pa_raop_packet_buffer_reset()
86 pb->pos = 0; in pa_raop_packet_buffer_reset()
87 pb->count = 0; in pa_raop_packet_buffer_reset()
88 pb->seq = (!seq) ? UINT16_MAX : seq - 1; in pa_raop_packet_buffer_reset()
89 for (i = 0; i < pb->size; i++) { in pa_raop_packet_buffer_reset()
90 if (pb->packets[i].memblock) in pa_raop_packet_buffer_reset()
91 pa_memblock_unref(pb->packets[i].memblock); in pa_raop_packet_buffer_reset()
92 pa_memchunk_reset(&pb->packets[i]); in pa_raop_packet_buffer_reset()
96 pa_memchunk *pa_raop_packet_buffer_prepare(pa_raop_packet_buffer *pb, uint16_t seq, const size_t si… in pa_raop_packet_buffer_prepare() argument
100 pa_assert(pb); in pa_raop_packet_buffer_prepare()
101 pa_assert(pb->packets); in pa_raop_packet_buffer_prepare()
105 pa_assert(pb->seq == UINT16_MAX); in pa_raop_packet_buffer_prepare()
106 pb->seq = 0; in pa_raop_packet_buffer_prepare()
109 pa_assert(seq == pb->seq + 1); in pa_raop_packet_buffer_prepare()
110 pb->seq++; in pa_raop_packet_buffer_prepare()
113 i = (pb->pos + 1) % pb->size; in pa_raop_packet_buffer_prepare()
115 if (pb->packets[i].memblock) in pa_raop_packet_buffer_prepare()
116 pa_memblock_unref(pb->packets[i].memblock); in pa_raop_packet_buffer_prepare()
117 pa_memchunk_reset(&pb->packets[i]); in pa_raop_packet_buffer_prepare()
119 pb->packets[i].memblock = pa_memblock_new(pb->mempool, size); in pa_raop_packet_buffer_prepare()
120 pb->packets[i].length = size; in pa_raop_packet_buffer_prepare()
121 pb->packets[i].index = 0; in pa_raop_packet_buffer_prepare()
123 packet = &pb->packets[i]; in pa_raop_packet_buffer_prepare()
125 if (pb->count < pb->size) in pa_raop_packet_buffer_prepare()
126 pb->count++; in pa_raop_packet_buffer_prepare()
127 pb->pos = i; in pa_raop_packet_buffer_prepare()
132 pa_memchunk *pa_raop_packet_buffer_retrieve(pa_raop_packet_buffer *pb, uint16_t seq) { in pa_raop_packet_buffer_retrieve() argument
136 pa_assert(pb); in pa_raop_packet_buffer_retrieve()
137 pa_assert(pb->packets); in pa_raop_packet_buffer_retrieve()
139 if (seq == pb->seq) in pa_raop_packet_buffer_retrieve()
140 packet = &pb->packets[pb->pos]; in pa_raop_packet_buffer_retrieve()
142 if (seq < pb->seq) { in pa_raop_packet_buffer_retrieve()
144 delta = pb->seq - seq; in pa_raop_packet_buffer_retrieve()
147 delta = pb->seq + (UINT16_MAX - seq); in pa_raop_packet_buffer_retrieve()
151 if (delta > pb->count) in pa_raop_packet_buffer_retrieve()
154 i = (pb->size + pb->pos - delta) % pb->size; in pa_raop_packet_buffer_retrieve()
156 if (delta < pb->size && pb->packets[i].memblock) in pa_raop_packet_buffer_retrieve()
157 packet = &pb->packets[i]; in pa_raop_packet_buffer_retrieve()