Loading drivers/media/platform/msm/dvb/adapter/mpq_stream_buffer.c +26 −1 Original line number Diff line number Diff line Loading @@ -252,7 +252,8 @@ int mpq_streambuffer_pkt_write( packet->user_data_len; /* Make sure enough space available for packet header */ if (dvb_ringbuffer_free(&sbuff->packet_data) < len) { if (dvb_ringbuffer_free(&sbuff->packet_data) < (len + DVB_RINGBUFFER_PKTHDRSIZE)) { spin_unlock(&sbuff->packet_data.lock); return -ENOSPC; } Loading Loading @@ -727,3 +728,27 @@ int mpq_streambuffer_get_data_rw_offset( return 0; } EXPORT_SYMBOL(mpq_streambuffer_get_data_rw_offset); ssize_t mpq_streambuffer_metadata_free(struct mpq_streambuffer *sbuff) { ssize_t free; if (NULL == sbuff) return -EINVAL; spin_lock(&sbuff->packet_data.lock); /* check if buffer was released */ if (sbuff->packet_data.error == -ENODEV) { spin_unlock(&sbuff->packet_data.lock); return -ENODEV; } free = dvb_ringbuffer_free(&sbuff->packet_data); spin_unlock(&sbuff->packet_data.lock); return free; } EXPORT_SYMBOL(mpq_streambuffer_metadata_free); drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c +12 −6 Original line number Diff line number Diff line Loading @@ -59,12 +59,13 @@ */ #define VIDEO_NUM_OF_PES_PACKETS 500 #define VIDEO_META_DATA_BUFFER_SIZE \ (VIDEO_NUM_OF_PES_PACKETS * \ #define VIDEO_META_DATA_PACKET_SIZE \ (DVB_RINGBUFFER_PKTHDRSIZE + \ sizeof(struct mpq_streambuffer_packet_header) + \ sizeof(struct mpq_adapter_video_meta_data))) sizeof(struct mpq_adapter_video_meta_data)) #define VIDEO_META_DATA_BUFFER_SIZE \ (VIDEO_NUM_OF_PES_PACKETS * VIDEO_META_DATA_PACKET_SIZE) /* Number of demux devices, has default of linux configuration */ static int mpq_demux_device_num = CONFIG_DVB_MPQ_NUM_DMX_DEVICES; Loading Loading @@ -1798,7 +1799,12 @@ static inline int mpq_dmx_check_decoder_fullness( struct mpq_streambuffer *sbuff, size_t required_space) { u32 free = mpq_streambuffer_data_free(sbuff); ssize_t free = mpq_streambuffer_data_free(sbuff); ssize_t free_meta = mpq_streambuffer_metadata_free(sbuff); /* Verify meta-data buffer can contain at least 1 packet */ if (free_meta < VIDEO_META_DATA_PACKET_SIZE) return 0; /* * For linear buffers, verify there's enough space for this TSP Loading drivers/media/platform/msm/dvb/include/mpq_stream_buffer.h +7 −0 Original line number Diff line number Diff line Loading @@ -441,5 +441,12 @@ int mpq_streambuffer_get_data_rw_offset( u32 *read_offset, u32 *write_offset); /** * mpq_streambuffer_metadata_free - returns number of free bytes in the meta * data buffer, or error status. * @sbuff: the stream buffer object */ ssize_t mpq_streambuffer_metadata_free(struct mpq_streambuffer *sbuff); #endif /* _MPQ_STREAM_BUFFER_H */ Loading
drivers/media/platform/msm/dvb/adapter/mpq_stream_buffer.c +26 −1 Original line number Diff line number Diff line Loading @@ -252,7 +252,8 @@ int mpq_streambuffer_pkt_write( packet->user_data_len; /* Make sure enough space available for packet header */ if (dvb_ringbuffer_free(&sbuff->packet_data) < len) { if (dvb_ringbuffer_free(&sbuff->packet_data) < (len + DVB_RINGBUFFER_PKTHDRSIZE)) { spin_unlock(&sbuff->packet_data.lock); return -ENOSPC; } Loading Loading @@ -727,3 +728,27 @@ int mpq_streambuffer_get_data_rw_offset( return 0; } EXPORT_SYMBOL(mpq_streambuffer_get_data_rw_offset); ssize_t mpq_streambuffer_metadata_free(struct mpq_streambuffer *sbuff) { ssize_t free; if (NULL == sbuff) return -EINVAL; spin_lock(&sbuff->packet_data.lock); /* check if buffer was released */ if (sbuff->packet_data.error == -ENODEV) { spin_unlock(&sbuff->packet_data.lock); return -ENODEV; } free = dvb_ringbuffer_free(&sbuff->packet_data); spin_unlock(&sbuff->packet_data.lock); return free; } EXPORT_SYMBOL(mpq_streambuffer_metadata_free);
drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c +12 −6 Original line number Diff line number Diff line Loading @@ -59,12 +59,13 @@ */ #define VIDEO_NUM_OF_PES_PACKETS 500 #define VIDEO_META_DATA_BUFFER_SIZE \ (VIDEO_NUM_OF_PES_PACKETS * \ #define VIDEO_META_DATA_PACKET_SIZE \ (DVB_RINGBUFFER_PKTHDRSIZE + \ sizeof(struct mpq_streambuffer_packet_header) + \ sizeof(struct mpq_adapter_video_meta_data))) sizeof(struct mpq_adapter_video_meta_data)) #define VIDEO_META_DATA_BUFFER_SIZE \ (VIDEO_NUM_OF_PES_PACKETS * VIDEO_META_DATA_PACKET_SIZE) /* Number of demux devices, has default of linux configuration */ static int mpq_demux_device_num = CONFIG_DVB_MPQ_NUM_DMX_DEVICES; Loading Loading @@ -1798,7 +1799,12 @@ static inline int mpq_dmx_check_decoder_fullness( struct mpq_streambuffer *sbuff, size_t required_space) { u32 free = mpq_streambuffer_data_free(sbuff); ssize_t free = mpq_streambuffer_data_free(sbuff); ssize_t free_meta = mpq_streambuffer_metadata_free(sbuff); /* Verify meta-data buffer can contain at least 1 packet */ if (free_meta < VIDEO_META_DATA_PACKET_SIZE) return 0; /* * For linear buffers, verify there's enough space for this TSP Loading
drivers/media/platform/msm/dvb/include/mpq_stream_buffer.h +7 −0 Original line number Diff line number Diff line Loading @@ -441,5 +441,12 @@ int mpq_streambuffer_get_data_rw_offset( u32 *read_offset, u32 *write_offset); /** * mpq_streambuffer_metadata_free - returns number of free bytes in the meta * data buffer, or error status. * @sbuff: the stream buffer object */ ssize_t mpq_streambuffer_metadata_free(struct mpq_streambuffer *sbuff); #endif /* _MPQ_STREAM_BUFFER_H */