fix typo on audio rbuf read

This commit is contained in:
sillysagiri 2024-08-11 10:52:13 +07:00
parent e102d7c198
commit 19e48a4d6a
3 changed files with 40 additions and 52 deletions

View File

@ -1,27 +1,15 @@
#!/bin/sh
video1="video.mp4"
video1="catch.mp4"
palette1="palette1.png"
# output1="out_badapple.mp4"
output1="out1/out_%d.bmp"
output1="out/out_%d.bmp"
video2="2d.mp4"
palette2="palette2.png"
output2="out2/out_%d.bmp"
# output="output.mp4"
filters="scale=256x192:flags=lanczos:force_original_aspect_ratio=decrease,pad=256:192:-1:-1:color=black,fps=30"
filters="scale=256x192:flags=lanczos:force_original_aspect_ratio=decrease,pad=256:192:-1:-1:color=black,fps=24"
# video
ffmpeg -i $video1 -vf "$filters,palettegen=max_colors=256:reserve_transparent=0:stats_mode=diff" -y $palette1
ffmpeg -i $video1 -i $palette1 -filter_complex "$filters[x];[x][1:v]paletteuse=dither=none" -y $output1
# ffmpeg -i $video1 -vf "$filters,palettegen=max_colors=256:reserve_transparent=0:stats_mode=diff" -y $palette1
ffmpeg -i $video1 -i $palette1 -filter_complex "$filters[x];[x][1:v]paletteuse=dither=sierra3" -y $output1
# audio
ffmpeg -i $video1 -f s16le -vn -ac 2 -ar 22050 -y music1.raw
# video
# ffmpeg -i $video2 -vf "$filters,palettegen=max_colors=256:reserve_transparent=0:stats_mode=diff" -y $palette2
# ffmpeg -i $video2 -i $palette2 -filter_complex "$filters[x];[x][1:v]paletteuse=dither=none" -y $output2
# # audio
# ffmpeg -i $video2 -f s16le -vn -ac 2 -ar 22050 -y music2.raw
# ffmpeg -i $video1 -f s16le -vn -ac 2 -ar 22050 -y music1.raw

View File

@ -208,7 +208,7 @@ int main()
{
// Convert(ASSETS_PATH "out1/", ASSETS_PATH "palette1.png", "../nitrofs/", "data_fastlz", 1);
// Convert(ASSETS_PATH "out1/", ASSETS_PATH "palette1.png", "../nitrofs/", "data_rle", 2);
Convert(ASSETS_PATH "out1/", ASSETS_PATH "palette1.png", "../nitrofs/", "main", 3);
Convert(ASSETS_PATH "out/", ASSETS_PATH "palette1.png", "../nitrofs/", "main", 3);
// Convert(ASSETS_PATH "out2/", ASSETS_PATH "palette2.png", "../nitrofs/", "sub");
}

View File

@ -26,14 +26,14 @@
// TODO: hardcode fix
#define CHUNK_SIZE 8
#define FRAMERATE 30
#define VIDEO_TOTALFRAME 6584
#define FRAMERATE 24
#define VIDEO_TOTALFRAME 3268
#define VIDEO_RBUF_LEN CHUNK_SIZE*6
#define VIDEO_RBUF_LEN CHUNK_SIZE*8
#define VIDEO_RBUF_BUFFER FRAME_SIZE
#define VIDEO_TEMP_SIZE 96100
#define VIDEO_TEMP_SIZE 204000
#define MMSTREAM_BUF_SIZE 16*200
#define MMSTREAM_BUF_SIZE 800
#define MUSIC_RBUF_SIZE 96000*2
void wait_forever(const char* msg);
@ -313,8 +313,8 @@ int main(void) {
{
Raylib::nocashMessageFormat("preload audio");
int len = music_rb->GetFree();
fread(music_rb->GetTail(), len, 1, file_music);
music_rb->Advance(len);
int adv = fread(music_rb->GetTail(), sizeof(char), len, file_music);
music_rb->Advance(adv);
Raylib::nocashMessageFormat("preload done");
}
@ -335,10 +335,9 @@ int main(void) {
timerStart(0, ClockDivider_1024, TIMER_FREQ_1024(FRAMERATE), TimerCallback);
irqSet(IRQ_VBLANK, []{
printf("\033[3;2H\033[Kno frame: %i\n", noframe);
printf("\033[4;2H\033[Kvideo buffer: %i frames\n", videomain_rb->count);
printf("\033[5;2H\033[Kmusic buffer: %i bytes\n", music_rb->count);
if (noframe) printf("\033[6;2H\033[Kno frame: %i\n", noframe);
// static int counter = 0;
// counter++;
@ -434,6 +433,7 @@ int ThreadMusic(void *arg)
{
int free = music_rb->GetFree();
int linear = music_rb->LinearWriteSize();
int adv = 0;
// memset(music_buffer_temp, 0, MUSIC_RBUF_SIZE);
// fread(music_buffer_temp, free, 1, file_music);
@ -442,17 +442,17 @@ int ThreadMusic(void *arg)
if (free < linear)
{
// memcpy(music_rb->GetTail(), music_buffer_temp, free);
fread(music_rb->GetTail(), 1, free, file_music);
adv += fread(music_rb->GetTail(), 1, free, file_music);
}
else
{
// memcpy(music_rb->GetTail(), music_buffer_temp, linear);
// memcpy(music_rb->buffer, music_buffer_temp, free-linear);
fread(music_rb->GetTail(), 1, linear, file_music);
fread(music_rb->buffer, 1, free-linear, file_music);
adv += fread(music_rb->GetTail(), 1, linear, file_music);
adv += fread(music_rb->buffer, 1, free-linear, file_music);
}
music_rb->Advance(free);
music_rb->Advance(adv);
}
@ -538,7 +538,7 @@ mm_word on_stream_request( mm_word length, mm_addr dest, mm_stream_formats forma
case MM_STREAM_16BIT_STEREO: samplesize = 4; break;
}
int len = length*samplesize;
int linear = music_rb->LinearWriteSize();
int linear = music_rb->LinearReadSize();
// Raylib::nocashMessageFormat("%i", len);
@ -547,33 +547,33 @@ mm_word on_stream_request( mm_word length, mm_addr dest, mm_stream_formats forma
// memcpy(dest, music_buffer_temp, len);
// return length;
if (len < linear)
{
memcpy(dest, music_rb->GetHead(), len);
music_rb->Skip(len);
return length;
}
else
{
// Raylib::nocashMessageFormat("linear %i", linear);
memcpy(dest, music_rb->GetHead(), linear);
// memcpy((char*)dest+linear, music_rb->buffer, len-linear);
music_rb->Skip(linear);
return linear/samplesize;
}
// if (len < linear)
// {
// memcpy(dest, music_rb->GetHead(), len);
// music_rb->Skip(len);
// return length;
// }
// else
// {
// // Raylib::nocashMessageFormat("linear %i", linear);
// memcpy(dest, music_rb->GetHead(), linear);
// memcpy((char*)dest+linear, music_rb->buffer, len-linear);
// // memcpy((char*)dest+linear, music_rb->buffer, len-linear);
// music_rb->Skip(linear);
// return linear/samplesize;
// }
// music_rb->Skip(len);
// return length;
if (len < linear)
{
memcpy(dest, music_rb->GetHead(), len);
}
else
{
// Raylib::nocashMessageFormat("linear %i", linear);
memcpy(dest, music_rb->GetHead(), linear);
memcpy((char*)dest+linear, music_rb->buffer, len-linear);
}
music_rb->Skip(len);
return length;
}