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 #!/bin/sh
video1="video.mp4" video1="catch.mp4"
palette1="palette1.png" palette1="palette1.png"
# output1="out_badapple.mp4" # output1="out_badapple.mp4"
output1="out1/out_%d.bmp" output1="out/out_%d.bmp"
video2="2d.mp4" filters="scale=256x192:flags=lanczos:force_original_aspect_ratio=decrease,pad=256:192:-1:-1:color=black,fps=24"
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"
# video # video
ffmpeg -i $video1 -vf "$filters,palettegen=max_colors=256:reserve_transparent=0:stats_mode=diff" -y $palette1 # 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 -i $palette1 -filter_complex "$filters[x];[x][1:v]paletteuse=dither=sierra3" -y $output1
# audio # audio
ffmpeg -i $video1 -f s16le -vn -ac 2 -ar 22050 -y music1.raw # 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

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_fastlz", 1);
// Convert(ASSETS_PATH "out1/", ASSETS_PATH "palette1.png", "../nitrofs/", "data_rle", 2); // 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"); // Convert(ASSETS_PATH "out2/", ASSETS_PATH "palette2.png", "../nitrofs/", "sub");
} }

View File

@ -26,14 +26,14 @@
// TODO: hardcode fix // TODO: hardcode fix
#define CHUNK_SIZE 8 #define CHUNK_SIZE 8
#define FRAMERATE 30 #define FRAMERATE 24
#define VIDEO_TOTALFRAME 6584 #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_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 #define MUSIC_RBUF_SIZE 96000*2
void wait_forever(const char* msg); void wait_forever(const char* msg);
@ -313,8 +313,8 @@ int main(void) {
{ {
Raylib::nocashMessageFormat("preload audio"); Raylib::nocashMessageFormat("preload audio");
int len = music_rb->GetFree(); int len = music_rb->GetFree();
fread(music_rb->GetTail(), len, 1, file_music); int adv = fread(music_rb->GetTail(), sizeof(char), len, file_music);
music_rb->Advance(len); music_rb->Advance(adv);
Raylib::nocashMessageFormat("preload done"); Raylib::nocashMessageFormat("preload done");
} }
@ -335,10 +335,9 @@ int main(void) {
timerStart(0, ClockDivider_1024, TIMER_FREQ_1024(FRAMERATE), TimerCallback); timerStart(0, ClockDivider_1024, TIMER_FREQ_1024(FRAMERATE), TimerCallback);
irqSet(IRQ_VBLANK, []{ 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[4;2H\033[Kvideo buffer: %i frames\n", videomain_rb->count);
printf("\033[5;2H\033[Kmusic buffer: %i bytes\n", music_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; // static int counter = 0;
// counter++; // counter++;
@ -434,6 +433,7 @@ int ThreadMusic(void *arg)
{ {
int free = music_rb->GetFree(); int free = music_rb->GetFree();
int linear = music_rb->LinearWriteSize(); int linear = music_rb->LinearWriteSize();
int adv = 0;
// memset(music_buffer_temp, 0, MUSIC_RBUF_SIZE); // memset(music_buffer_temp, 0, MUSIC_RBUF_SIZE);
// fread(music_buffer_temp, free, 1, file_music); // fread(music_buffer_temp, free, 1, file_music);
@ -442,17 +442,17 @@ int ThreadMusic(void *arg)
if (free < linear) if (free < linear)
{ {
// memcpy(music_rb->GetTail(), music_buffer_temp, free); // 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 else
{ {
// memcpy(music_rb->GetTail(), music_buffer_temp, linear); // memcpy(music_rb->GetTail(), music_buffer_temp, linear);
// memcpy(music_rb->buffer, music_buffer_temp, free-linear); // memcpy(music_rb->buffer, music_buffer_temp, free-linear);
fread(music_rb->GetTail(), 1, linear, file_music); adv += fread(music_rb->GetTail(), 1, linear, file_music);
fread(music_rb->buffer, 1, free-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; case MM_STREAM_16BIT_STEREO: samplesize = 4; break;
} }
int len = length*samplesize; int len = length*samplesize;
int linear = music_rb->LinearWriteSize(); int linear = music_rb->LinearReadSize();
// Raylib::nocashMessageFormat("%i", len); // 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); // memcpy(dest, music_buffer_temp, len);
// return length; // 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) // if (len < linear)
// { // {
// memcpy(dest, music_rb->GetHead(), len); // memcpy(dest, music_rb->GetHead(), len);
// music_rb->Skip(len);
// return length;
// } // }
// else // else
// { // {
// // Raylib::nocashMessageFormat("linear %i", linear); // // Raylib::nocashMessageFormat("linear %i", linear);
// memcpy(dest, music_rb->GetHead(), 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;
} }