libobs: Use reference counting for encoder packets
Prevents reallocation of encoded packet data. Deprecates: obs_duplicate_encoder_packet obs_free_encoder_packet Replaces those functions with: obs_encoder_packet_ref obs_encoder_packet_release
This commit is contained in:
@@ -134,7 +134,7 @@ static inline void free_packets(struct rtmp_stream *stream)
|
||||
while (stream->packets.size) {
|
||||
struct encoder_packet packet;
|
||||
circlebuf_pop_front(&stream->packets, &packet, sizeof(packet));
|
||||
obs_free_encoder_packet(&packet);
|
||||
obs_encoder_packet_release(&packet);
|
||||
}
|
||||
pthread_mutex_unlock(&stream->packets_mutex);
|
||||
}
|
||||
@@ -375,7 +375,7 @@ static int send_packet(struct rtmp_stream *stream,
|
||||
ret = RTMP_Write(&stream->rtmp, (char*)data, (int)size, (int)idx);
|
||||
bfree(data);
|
||||
|
||||
obs_free_encoder_packet(packet);
|
||||
obs_encoder_packet_release(packet);
|
||||
|
||||
stream->total_bytes_sent += size;
|
||||
return ret;
|
||||
@@ -414,7 +414,7 @@ static void *send_thread(void *data)
|
||||
|
||||
if (stopping(stream)) {
|
||||
if (can_shutdown_stream(stream, &packet)) {
|
||||
obs_free_encoder_packet(&packet);
|
||||
obs_encoder_packet_release(&packet);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -844,7 +844,7 @@ static void drop_frames(struct rtmp_stream *stream, const char *name,
|
||||
|
||||
} else {
|
||||
num_frames_dropped++;
|
||||
obs_free_encoder_packet(&packet);
|
||||
obs_encoder_packet_release(&packet);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -929,7 +929,7 @@ static void rtmp_stream_data(void *data, struct encoder_packet *packet)
|
||||
if (packet->type == OBS_ENCODER_VIDEO)
|
||||
obs_parse_avc_packet(&new_packet, packet);
|
||||
else
|
||||
obs_duplicate_encoder_packet(&new_packet, packet);
|
||||
obs_encoder_packet_ref(&new_packet, packet);
|
||||
|
||||
pthread_mutex_lock(&stream->packets_mutex);
|
||||
|
||||
@@ -944,7 +944,7 @@ static void rtmp_stream_data(void *data, struct encoder_packet *packet)
|
||||
if (added_packet)
|
||||
os_sem_post(stream->send_sem);
|
||||
else
|
||||
obs_free_encoder_packet(&new_packet);
|
||||
obs_encoder_packet_release(&new_packet);
|
||||
}
|
||||
|
||||
static void rtmp_stream_defaults(obs_data_t *defaults)
|
||||
|
Reference in New Issue
Block a user