[FFmpeg-devel] [PATCH] Add FITS Demuxer

Nicolas George george at nsup.org
Fri Jul 14 20:45:30 EEST 2017


Le tridi 23 messidor, an CCXXV, Paras Chadha a écrit :
> Hi, I have attached the dump of a FITS File containing 5 images and 4
> binary table xtensions. The dump is taken using fdump utility. Please take
> a look.

Thanks for the dump. But it is you who know the format, thus it is you
who can tell the most accurate things about it.

Anyway, distributing the task between the demuxer and the decoder and
deciding the format of the payload is absolutely necessary before any
real work can proceed on the implementation.


> This is the header of the first (primary) image.
> 
> SIMPLE  =                    T / FITS STANDARD
> BITPIX  =                    8 / Character information
> NAXIS   =                    0 / No image data array present
> EXTEND  =                    T / There may be standard extensions
> DATE    = '21/09/99'           / Date file was written (dd/mm/yy) 19yy
> ORIGIN  = 'CEA/SSL UC Berkeley' / EUVE Science Archive
> CREATOR = 'STWFITS '           / Fitsio version 05-Aug-1997
> TELESCOP= 'EUVE    '           / Extreme Ultraviolet Explorer
> INSTTYPE= 'DS/S    '           / Instrument type (DS/S, SCANNER)
> OBJECT  = '        '           / Name of observed object
> RA_OBJ  =             79.17265 / R.A. of the object (degrees)
> DEC_OBJ =             45.99862 / Declination of the object (degrees)
> RA_PNT  =     79.1724000000003 / R.A. of the pointing direction (degrees)
> DEC_PNT =               46.007 / Declination of the pointing direction (degrees)
> RA_PROC =             79.17586 / R.A. used to process data (degrees)
> DEC_PROC=             45.99578 / Declination used to process data (degrees)
> DATE-OBS= '08/09/99 GMT'       / Start date of observation (dd/mm/yy) 19yy
> TIME-OBS= '00:14:29 GMT'       / Start time of observation (hh:mm:ss GMT)
> DATE-END= '13/09/99 GMT'       / End date of observation (dd/mm/yy) 19yy
> TIME-END= '22:07:43 GMT'       / End time of observation (hh:mm:ss GMT)
> OBS_MODE= 'POINTING'           / Inertial pointing mode
> DITHER  = 'SPIRAL  '           / Spacecraft dither type (DITHERED, SPIRAL, NONE)
> DETMODE = 'WSZ     '           / Detector position conversion mode (WSZ or XY)
> OFF-AXIS=                    F / Was this pointing done off-axis
> MOVING  =                    F / Did the source position vary during observation
> DAYNIGHT= 'NIGHT   '           / Day/night data indicator (DAY, NIGHT, BOTH)
> VALIDTIM=      132369.40583229 / Amount of telemetry present (seconds)
> RA_UNIT = 'deg     '           / Units for Right Ascension
> DEC_UNIT= 'deg     '           / Units for Declination
> EQUINOX =                2000. / Coordinate equinox
> RADECSYS= 'FK5     '           / Frame of reference of coordinates
> TIMESYS = 'MJD     '           / MJD = JD - 2400000.5
> TIMEZERO=                   0. / No time offset required for EUVE event times
> TIMEUNIT= 's       '           / Units for TSTART, TSTOP, TIMEZERO
> CLOCKCOR= 'NO      '           / Not corrected to UT
> TIMEREF = 'LOCAL   '           / No corrections applied (barycentric, etc.)
> TASSIGN = 'SATELLITE'          / Event times are assigned at the satellite
> TSTART  =     987466469.376002 / Time of start of observation (seconds)
> TSTOP   =     987977263.104001 / Time of end of observation (seconds)
> MJDREF  =               40000. / MJD of SC clock start, 24.00 May 1968
> EGOCSVER= 'egocs1.7.2'         / Software version used to produce this data
> REFVERS = 'egodata1.15.2'      / Reference calibration dataset version used
> COMMENT     ' '
> COMMENT     'This file is part of the EUVE Science Archive. It contains'
> COMMENT     'images and filter limits for one EUVE observation.'
> COMMENT     ' '
> COMMENT     'The EUVE Science Archive contains the science data from'
> COMMENT     'observations performed with the EUVE telescopes. It forms one'
> COMMENT     'part of the EUVE Permanent Archive. The other part of the'
> COMMENT     'permanent archive is the EUVE Telemetry Archive, which is a'
> COMMENT     'complete record of the raw telemetry from the EUVE mission.'
> COMMENT     ' '
> COMMENT     'For documentation of the contents of the EUVE Science Archive,'
> COMMENT     'see the "EUVE Science Archive User's Guide".  The contents of'
> COMMENT     'the EUVE Telemetry Archive are described in the "EUVE'
> COMMENT     'Telemetry Archive User's Guide".'
> COMMENT     ' '
> COMMENT     'The EUVE Permanent Archive was produced by the Center for EUV'
> COMMENT     'Astrophysics, a division of UC Berkeley's Space Science'
> COMMENT     Laboratory.
> COMMENT     ' '
> END
> 
> This will be followed by the data part whose size (in bits) is given by - |BITPIX| * GCOUNT * (PCOUNT + NAXIS1 * NAXIS2 * ... * NAXISm) = 0 in this case, so no data part is there

You forgot to explain what should be done with an image without data.

> 
> This is the header of second image.
> 
> XTENSION= 'IMAGE   '           / IMAGE extension
> BITPIX  =                   16 / 8-bit bytes
> NAXIS   =                    2 / 2-dimensional image
> NAXIS1  =                 2048 / Number of image columns
> NAXIS2  =                 2048 / Number of image rows
> PCOUNT  =                    0 / Size of special data area
> GCOUNT  =                    1 / Only one group
> EXTNAME = 'ds      '           / Name of image
> BSCALE  =                1.0E0 / Scale factor for pixel values
> BZERO   =                0.0E0 / Offset for pixel values
> CTYPE1  = 'RA---TAN'           / RA in tangent plane projection
> CRVAL1  =     79.1726455688478 / RA at reference pixel
> CRPIX1  =               1024.5 / reference pixel, axis 1
> CDELT1  =  0.00126953120343387 / scale, axis 1
> CUNIT1  = 'deg     '           / units of CRVAL1, CDELT1
> CTYPE2  = 'DEC--TAN'           / DEC in tangent plane projection
> CRVAL2  =     45.9986228942872 / DEC at reference pixel
> CRPIX2  =               1024.5 / reference pixel, axis 2
> CDELT2  =  0.00126953120343387 / scale, axis 2
> CUNIT2  = 'deg     '           / units of CRVAL2, CDELT2
> EXPTIME =             64971.06 / Primbsch/deadtime corrected exposure time
> RAWEXP  =             86784.98 / Uncorrected exposure time
> FILENAME= 'ds      '
> ORIGIN  = 'CEA/SSL UC Berkeley' / EUVE Science Archive
> CREATOR = 'STWFITS '           / Fitsio version 05-Aug-1997
> TELESCOP= 'EUVE    '           / Extreme Ultraviolet Explorer
> INSTTYPE= 'DS/S    '           / Instrument type (DS/S, SCANNER)
> INSTRUME= 'DS/S    '           / Deep Survey - Spectrometer
> DETNAM  = 'DS      '           / Deep Survey
> OBJECT  = '        '           / Name of observed object
> RA_OBJ  = '79.172646'          / R.A. of the object (degrees)
> DEC_OBJ = '45.998624'          / Declination of the object (degrees)
> RA_PNT  =     79.1724000000002 / R.A. of the pointing direction (degrees)
> DEC_PNT =               46.007 / Declination of the pointing direction (degrees)
> RA_PROC =             79.17586 / R.A. used to process data (degrees)
> DEC_PROC=             45.99578 / Declination used to process data (degrees)
> DATE-OBS= '08/09/99 GMT'       / Start date of observation (dd/mm/yy) 19yy
> TIME-OBS= '00:14:29 GMT'       / Start time of observation (hh:mm:ss GMT)
> DATE-END= '13/09/99 GMT'       / End date of observation (dd/mm/yy) 19yy
> TIME-END= '22:07:43 GMT'       / End time of observation (hh:mm:ss GMT)
> OBS_MODE= 'POINTING'           / Inertial pointing mode
> DITHER  = 'SPIRAL  '           / Spacecraft dither type (DITHERED, SPIRAL, NONE)
> DETMODE = 'WSZ     '           / Detector position conversion mode (WSZ or XY)
> OFF-AXIS=                    F / Was this pointing done off-axis
> MOVING  =                    F / Did the source position vary during observation
> DAYNIGHT= 'NIGHT   '           / Day/night data indicator (DAY, NIGHT, BOTH)
> VALIDTIM=      132369.40583229 / Amount of telemetry present (seconds)
> RA_UNIT = 'deg     '           / Units for Right Ascension
> DEC_UNIT= 'deg     '           / Units for Declination
> EQUINOX =                2000. / Coordinate equinox
> RADECSYS= 'FK5     '           / Frame of reference of coordinates
> TIMESYS = 'MJD     '           / MJD = JD - 2400000.5
> TIMEZERO=                   0. / No time offset required for EUVE event times
> TIMEUNIT= 's       '           / Units for TSTART, TSTOP, TIMEZERO
> CLOCKCOR= 'NO      '           / Not corrected to UT
> TIMEREF = 'LOCAL   '           / No corrections applied (barycentric, etc.)
> TASSIGN = 'SATELLITE'          / Event times are assigned at the satellite
> TSTART  =     987466469.376001 / Time of start of observation (seconds)
> TSTOP   =     987977263.104001 / Time of end of observation (seconds)
> TIERRABS=                0.001 / Timing precision (seconds)
> MJDREF  =               40000. / MJD of SC clock start, 24.00 May 1968
> EGOCSVER= 'egocs1.7.2'         / Software version used to produce this data
> REFVERS = 'egodata1.15.2'      / Reference calibration dataset version used
> INHERIT =                    F / Do not inherit cards from the primary header
> COMMENT     ' '
> COMMENT     'This extension contains an image of the Deep Survey detector'
> COMMENT     'for this observation. All events have been remapped onto the'
> COMMENT     'sky.  The filter limits used to select events for inclusion'
> COMMENT     'in this image are in the binary table extension named'
> COMMENT     '"ds_limits" in this file.'
> COMMENT     ' '
> END
> 
> Here also there is data part whose size is given by the same expression

At a guess, all this could be parsed by the demuxer, using BITPIX and
NAXIS* to populate codecpar->width, codecpar->height and
codecpar->format and putting all the rest in string metadata, and only
the data itself go in the packet payload.

But you probably know better, so please have a loot at the fields in
AVPacket and AVCodecParameters, and tell us what you think.

Regards,

-- 
  Nicolas George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170714/ecd6c46c/attachment.sig>


More information about the ffmpeg-devel mailing list