Giter VIP home page Giter VIP logo

grip's People

Contributors

bostrt avatar cassella avatar dwest avatar

Stargazers

 avatar

Watchers

 avatar  avatar

grip's Issues

vtrackinfo file versioning

current version and "first version that can read this"

  • eg, when we can do VFRAMES=1-500,2000-3000,600-1500
  • some of the others below
  • versioning on both .vtrackinfo files and VALBUMs.
    VTRACKINFOVERSION=0
    VALBUMVERSION=0
    ...
    VNEWALBUM
    VALBUMVERSION=1
    new_feature
    ...
    VNEWALBUM
    VALBUMVERSION=0
    ...

crash after aborting a long, errorful rip

grip:ERROR:cdplay.c:2158:UpdateTracks: assertion failed: (uinfo->v_instance == NULL)

Program terminated with signal 6, Aborted.
#0 0xb6808537 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64

64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
in ../nptl/sysdeps/unix/sysv/linux/raise.c
(gdb) i s
#0 0xb6808537 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0xb680b922 in abort () at abort.c:92
#2 0xb6a0c32f in g_assertion_message () from /lib/libglib-2.0.so.0
#3 0xb6a0c98d in g_assertion_message_expr () from /lib/libglib-2.0.so.0
#4 0x08055bd5 in UpdateTracks (ginfo=0xb5fc1008) at cdplay.c:2158
#5 0x0805a09d in UpdateDisplay (ginfo=0xb5fc1008) at cdplay.c:2038
#6 0x08050291 in GripUpdate (app=0x9e93040) at grip.c:762
#7 0x0804ed63 in TimeOut (data=0x0) at main.c:228
#8 0xb69e6a7c in ?? () from /lib/libglib-2.0.so.0
#9 0xb69e6305 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#10 0xb69e9fe8 in ?? () from /lib/libglib-2.0.so.0
#11 0xb69ea527 in g_main_loop_run () from /lib/libglib-2.0.so.0
#12 0xb6f29e19 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#13 0x0804ed45 in Cmain (argc=1, argv=0xbfaf48c4) at main.c:192
#14 0x0804eafb in main (ac=1, av=0xbfaf48c4) at cppmain.cc:16

I suspect it was this code in UpdateDisplay:

if(!ginfo->update_required) {
if(ginfo->have_disc) {
/* Allow disc time to spin down after ripping before checking for a new
disc. Some drives report no disc when spinning down. */
if(ginfo->rip_finished) {
if((time(NULL)-ginfo->rip_finished)>5) {
ginfo->rip_finished=0;
}}

  if(!ginfo->rip_finished) {
CDStat(&ginfo->Disc,FALSE);

if(!disc->disc_present) {
  ginfo->have_disc=FALSE;
  ginfo->update_required=TRUE;

}}}}

Hypothesis: we set rip_finished in RipIsFinished(), but then it took long enough before we could actually tell the drive to stop that we didn't get the whole 5 seconds of waiting. (Or it took my drive more than 5 seconds to respond and spin down, and reported itself not present as per the comment.)

vtracks with virtual track numbers can't be ripped with external rippers

The default ripcmdline is

-d %c %t:[.%s]-%t:[.%e] %w

As it stands, %t gets replaced with the vtracknum, so the ripper is asked to rip something nonsensical.

Unfortunately, when vtracks are involved, the two %t may need to get different values.

The grip-internal libcdda_paranoia ripper works.

drive reporting curr_frame after the range we asked it to play can confuse CDStat().

In CDStat(), at "This loop finds the first track",

With this vtrackinfofile, after track 12 has finished, but before we've
started track 13, curr_frame can be 229230, almost 500 frames after it
should have stopped. The drive has stopped playing, so
CDAUDIO_NOSTATUS, but this loop leaves curr_track 13, and
UpdateDisplay() will think we've finished track 13, so it will skip to
the next track.

(b30c1b0d.vtrackinfo)

VTITLE12=Spaceman
VFRAMES12=PTRACK12-228763
VTITLE13=Bye
VFRAMES13=229214-PTRACK12

*/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.