Skip to content

Commit

Permalink
ps3: Readjust thread priorites to better deal with bursty loads durin…
Browse files Browse the repository at this point in the history
…g torrent streaming

Also avoid posting too many prop value updates when we fill queues

Fixes #2584
  • Loading branch information
andoma committed May 27, 2015
1 parent c5764a5 commit ad5738f
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 12 deletions.
19 changes: 10 additions & 9 deletions src/arch/ps3/ps3_threads.h
Expand Up @@ -142,15 +142,16 @@ extern int hts_cond_wait_timeoutx(hts_cond_t *c, hts_mutex_t *m, int delay, cons
typedef sys_ppu_thread_t hts_thread_t;

#define THREAD_PRIO_AUDIO 10
#define THREAD_PRIO_VIDEO 100
#define THREAD_PRIO_DEMUXER 200
#define THREAD_PRIO_UI_WORKER_HIGH 400
#define THREAD_PRIO_UI_WORKER_MED 450
#define THREAD_PRIO_FILESYSTEM 500
#define THREAD_PRIO_MODEL 1000
#define THREAD_PRIO_METADATA 2000
#define THREAD_PRIO_UI_WORKER_LOW 2300
#define THREAD_PRIO_METADATA_BG 2600
#define THREAD_PRIO_VDEC 1400
#define THREAD_PRIO_VIDEO 1500
#define THREAD_PRIO_DEMUXER 2000
#define THREAD_PRIO_UI_WORKER_HIGH 2100
#define THREAD_PRIO_UI_WORKER_MED 2200
#define THREAD_PRIO_FILESYSTEM 2300
#define THREAD_PRIO_MODEL 2400
#define THREAD_PRIO_METADATA 2500
#define THREAD_PRIO_UI_WORKER_LOW 2600
#define THREAD_PRIO_METADATA_BG 2700
#define THREAD_PRIO_BGTASK 3000


Expand Down
3 changes: 1 addition & 2 deletions src/arch/ps3/ps3_vdec.c
Expand Up @@ -40,7 +40,6 @@ static int vdec_h264_loaded;
#define VDEC_DETAILED_DEBUG 0

#define VDEC_SPU_PRIO 100
#define VDEC_PPU_PRIO 1000

LIST_HEAD(vdec_pic_list, vdec_pic);

Expand Down Expand Up @@ -956,7 +955,7 @@ video_ps3_vdec_codec_create(media_codec_t *mc, const media_codec_params_t *mcp,
vdd->config.mem_addr = (intptr_t)vdd->mem;
vdd->config.mem_size = dec_attr.mem_size;
vdd->config.num_spus = spu_threads;
vdd->config.ppu_thread_prio = VDEC_PPU_PRIO;
vdd->config.ppu_thread_prio = THREAD_PRIO_VDEC;
vdd->config.spu_thread_prio = VDEC_SPU_PRIO;
vdd->config.ppu_thread_stack_size = 1 << 14;

Expand Down
1 change: 1 addition & 0 deletions src/media/media.h
Expand Up @@ -237,6 +237,7 @@ typedef struct media_pipe {
int mp_svdelta; // Subtitle vs video delta (µs)
int mp_auto_standby;
int mp_stats;
int mp_stats_update_limiter;

struct audio_decoder *mp_audio_decoder;

Expand Down
9 changes: 8 additions & 1 deletion src/media/media_queue.c
Expand Up @@ -530,7 +530,14 @@ mb_enq(media_pipe_t *mp, media_queue_t *mq, media_buf_t *mb)
mq->mq_packets_current++;
mb->mb_epoch = mp->mp_epoch;
mp->mp_buffer_current += mb->mb_size;
mq_update_stats(mp, mq);

if(mp->mp_stats_update_limiter == 0) {
mq_update_stats(mp, mq);
mp->mp_stats_update_limiter = 100;
} else {
mp->mp_stats_update_limiter--;
}

if(do_signal)
hts_cond_signal(&mq->mq_avail);
}

0 comments on commit ad5738f

Please sign in to comment.