Commit 6851130f authored by Lou Logan's avatar Lou Logan Committed by Michael Niedermayer

cosmetics: minor libavcodec spelling errors

Also update some common misspelled words in patcheck
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 0692d4c8
...@@ -2616,7 +2616,7 @@ static av_cold int aac_decode_close(AVCodecContext *avctx) ...@@ -2616,7 +2616,7 @@ static av_cold int aac_decode_close(AVCodecContext *avctx)
struct LATMContext { struct LATMContext {
AACContext aac_ctx; ///< containing AACContext AACContext aac_ctx; ///< containing AACContext
int initialized; ///< initilized after a valid extradata was seen int initialized; ///< initialized after a valid extradata was seen
// parser data // parser data
int audio_mux_version_A; ///< LATM syntax version int audio_mux_version_A; ///< LATM syntax version
......
/* /*
* SSA/ASS common funtions * SSA/ASS common functions
* Copyright (c) 2010 Aurelien Jacobs <aurel@gnuage.org> * Copyright (c) 2010 Aurelien Jacobs <aurel@gnuage.org>
* *
* This file is part of FFmpeg. * This file is part of FFmpeg.
......
/* /*
* SSA/ASS common funtions * SSA/ASS common functions
* Copyright (c) 2010 Aurelien Jacobs <aurel@gnuage.org> * Copyright (c) 2010 Aurelien Jacobs <aurel@gnuage.org>
* *
* This file is part of FFmpeg. * This file is part of FFmpeg.
......
...@@ -246,7 +246,7 @@ static int at1_unpack_dequant(GetBitContext* gb, AT1SUCtx* su, ...@@ -246,7 +246,7 @@ static int at1_unpack_dequant(GetBitContext* gb, AT1SUCtx* su,
*/ */
spec[pos+i] = get_sbits(gb, word_len) * scale_factor * max_quant; spec[pos+i] = get_sbits(gb, word_len) * scale_factor * max_quant;
} }
} else { /* word_len = 0 -> empty BFU, zero all specs in the emty BFU */ } else { /* word_len = 0 -> empty BFU, zero all specs in the empty BFU */
memset(&spec[pos], 0, num_specs * sizeof(float)); memset(&spec[pos], 0, num_specs * sizeof(float));
} }
} }
......
...@@ -1523,7 +1523,7 @@ typedef struct AVCodecContext { ...@@ -1523,7 +1523,7 @@ typedef struct AVCodecContext {
/** /**
* Pixel format, see PIX_FMT_xxx. * Pixel format, see PIX_FMT_xxx.
* May be set by the demuxer if known from headers. * May be set by the demuxer if known from headers.
* May be overriden by the decoder if it knows better. * May be overridden by the decoder if it knows better.
* - encoding: Set by user. * - encoding: Set by user.
* - decoding: Set by user if known, overridden by libavcodec if known * - decoding: Set by user if known, overridden by libavcodec if known
*/ */
...@@ -2287,7 +2287,7 @@ typedef struct AVCodecContext { ...@@ -2287,7 +2287,7 @@ typedef struct AVCodecContext {
/** /**
* ratecontrol qmin qmax limiting method * ratecontrol qmin qmax limiting method
* 0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax. * 0-> clipping, 1-> use a nice continuous function to limit qscale wthin qmin/qmax.
* - encoding: Set by user. * - encoding: Set by user.
* - decoding: unused * - decoding: unused
*/ */
...@@ -3186,7 +3186,7 @@ typedef struct AVSubtitleRect { ...@@ -3186,7 +3186,7 @@ typedef struct AVSubtitleRect {
/** /**
* 0 terminated ASS/SSA compatible event line. * 0 terminated ASS/SSA compatible event line.
* The pressentation of this is unaffected by the other values in this * The presentation of this is unaffected by the other values in this
* struct. * struct.
*/ */
char *ass; char *ass;
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
* on testing, the code will wait until 3 pictures are ready before starting * on testing, the code will wait until 3 pictures are ready before starting
* to copy out - and this has the effect of extending the pipeline. * to copy out - and this has the effect of extending the pipeline.
* *
* Finally, while it is tempting to say that once the decoder starts outputing * Finally, while it is tempting to say that once the decoder starts outputting
* frames, the software should never fail to return a frame from a decode(), * frames, the software should never fail to return a frame from a decode(),
* this is a hard assertion to make, because the stream may switch between * this is a hard assertion to make, because the stream may switch between
* differently encoded content (number of b-frames, interlacing, etc) which * differently encoded content (number of b-frames, interlacing, etc) which
......
...@@ -861,7 +861,7 @@ static int dirac_unpack_prediction_parameters(DiracContext *s) ...@@ -861,7 +861,7 @@ static int dirac_unpack_prediction_parameters(DiracContext *s)
return -1; return -1;
} }
if (s->plane[0].xbsep > s->plane[0].xblen || s->plane[0].ybsep > s->plane[0].yblen) { if (s->plane[0].xbsep > s->plane[0].xblen || s->plane[0].ybsep > s->plane[0].yblen) {
av_log(s->avctx, AV_LOG_ERROR, "Block seperation greater than size\n"); av_log(s->avctx, AV_LOG_ERROR, "Block separation greater than size\n");
return -1; return -1;
} }
if (FFMAX(s->plane[0].xblen, s->plane[0].yblen) > MAX_BLOCKSIZE) { if (FFMAX(s->plane[0].xblen, s->plane[0].yblen) > MAX_BLOCKSIZE) {
...@@ -961,7 +961,7 @@ static int dirac_unpack_idwt_params(DiracContext *s) ...@@ -961,7 +961,7 @@ static int dirac_unpack_idwt_params(DiracContext *s)
CHECKEDREAD(s->wavelet_depth, tmp > MAX_DWT_LEVELS || tmp < 1, "invalid number of DWT decompositions\n") CHECKEDREAD(s->wavelet_depth, tmp > MAX_DWT_LEVELS || tmp < 1, "invalid number of DWT decompositions\n")
if (!s->low_delay) { if (!s->low_delay) {
/* Codeblock paramaters (core syntax only) */ /* Codeblock parameters (core syntax only) */
if (get_bits1(gb)) { if (get_bits1(gb)) {
for (i = 0; i <= s->wavelet_depth; i++) { for (i = 0; i <= s->wavelet_depth; i++) {
CHECKEDREAD(s->codeblock[i].width , tmp < 1, "codeblock width invalid\n") CHECKEDREAD(s->codeblock[i].width , tmp < 1, "codeblock width invalid\n")
......
...@@ -188,7 +188,7 @@ static void get_new_centroids(elbg_data *elbg, int huc, int *newcentroid_i, ...@@ -188,7 +188,7 @@ static void get_new_centroids(elbg_data *elbg, int huc, int *newcentroid_i,
/** /**
* Add the points in the low utility cell to its closest cell. Split the high * Add the points in the low utility cell to its closest cell. Split the high
* utility cell, putting the separed points in the (now empty) low utility * utility cell, putting the separate points in the (now empty) low utility
* cell. * cell.
* *
* @param elbg Internal elbg data * @param elbg Internal elbg data
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
/** /**
* G.726 11bit float. * G.726 11bit float.
* G.726 Standard uses rather odd 11bit floating point arithmentic for * G.726 Standard uses rather odd 11bit floating point arithmentic for
* numerous occasions. It's a mistery to me why they did it this way * numerous occasions. It's a mystery to me why they did it this way
* instead of simply using 32bit integer arithmetic. * instead of simply using 32bit integer arithmetic.
*/ */
typedef struct Float11 { typedef struct Float11 {
......
...@@ -562,7 +562,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, ...@@ -562,7 +562,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr,
gain_corr_factor = cb_gain_1st_6k4[gc_1st_index][1] + gain_corr_factor = cb_gain_1st_6k4[gc_1st_index][1] +
cb_gain_2nd_6k4[gc_2nd_index][1]; cb_gain_2nd_6k4[gc_2nd_index][1];
/* Without check below overflow can occure in ff_acelp_update_past_gain. /* Without check below overflow can occur in ff_acelp_update_past_gain.
It is not issue for G.729, because gain_corr_factor in it's case is always It is not issue for G.729, because gain_corr_factor in it's case is always
greater than 1024, while in G.729D it can be even zero. */ greater than 1024, while in G.729D it can be even zero. */
gain_corr_factor = FFMAX(gain_corr_factor, 1024); gain_corr_factor = FFMAX(gain_corr_factor, 1024);
...@@ -589,7 +589,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, ...@@ -589,7 +589,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr,
two times larger than in original G.729. two times larger than in original G.729.
If bit-exact result is not issue then gain_corr_factor If bit-exact result is not issue then gain_corr_factor
can be simpler devided by 2 before call to g729_get_gain_code can be simpler divided by 2 before call to g729_get_gain_code
instead of using correction below. instead of using correction below.
*/ */
if (packet_type == FORMAT_G729D_6K4) { if (packet_type == FORMAT_G729D_6K4) {
......
...@@ -513,7 +513,7 @@ typedef struct H264Context { ...@@ -513,7 +513,7 @@ typedef struct H264Context {
struct H264Context *thread_context[MAX_THREADS]; struct H264Context *thread_context[MAX_THREADS];
/** /**
* current slice number, used to initalize slice_num of each thread/context * current slice number, used to initialize slice_num of each thread/context
*/ */
int current_slice; int current_slice;
......
...@@ -268,7 +268,7 @@ void ff_h263_encode_gob_header(MpegEncContext * s, int mb_line) ...@@ -268,7 +268,7 @@ void ff_h263_encode_gob_header(MpegEncContext * s, int mb_line)
} }
/** /**
* modify qscale so that encoding is acually possible in h263 (limit difference to -2..2) * modify qscale so that encoding is actually possible in h263 (limit difference to -2..2)
*/ */
void ff_clean_h263_qscales(MpegEncContext *s){ void ff_clean_h263_qscales(MpegEncContext *s){
int i; int i;
......
...@@ -199,7 +199,7 @@ static int lag_read_prob_header(lag_rac *rac, GetBitContext *gb) ...@@ -199,7 +199,7 @@ static int lag_read_prob_header(lag_rac *rac, GetBitContext *gb)
/* Comment from reference source: /* Comment from reference source:
* if (b & 0x80 == 0) { // order of operations is 'wrong'; it has been left this way * if (b & 0x80 == 0) { // order of operations is 'wrong'; it has been left this way
* // since the compression change is negligable and fixing it * // since the compression change is negligable and fixing it
* // breaks backwards compatibilty * // breaks backwards compatibility
* b =- (signed int)b; * b =- (signed int)b;
* b &= 0xFF; * b &= 0xFF;
* } else { * } else {
......
...@@ -68,7 +68,7 @@ typedef struct MJpegDecodeContext { ...@@ -68,7 +68,7 @@ typedef struct MJpegDecodeContext {
int maxval; int maxval;
int near; ///< near lossless bound (si 0 for lossless) int near; ///< near lossless bound (si 0 for lossless)
int t1,t2,t3; int t1,t2,t3;
int reset; ///< context halfing intervall ?rename int reset; ///< context halfing interval ?rename
int width, height; int width, height;
int mb_width, mb_height; int mb_width, mb_height;
......
...@@ -1588,7 +1588,7 @@ static int decode_vol_header(MpegEncContext *s, GetBitContext *gb){ ...@@ -1588,7 +1588,7 @@ static int decode_vol_header(MpegEncContext *s, GetBitContext *gb){
skip_bits1(gb); /* marker */ skip_bits1(gb); /* marker */
} }
}else{ }else{
// set low delay flag only once the smartest? low delay detection won't be overriden // set low delay flag only once the smartest? low delay detection won't be overridden
if(s->picture_number==0) if(s->picture_number==0)
s->low_delay=0; s->low_delay=0;
} }
...@@ -2287,7 +2287,7 @@ static av_cold int decode_init(AVCodecContext *avctx) ...@@ -2287,7 +2287,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
} }
s->h263_pred = 1; s->h263_pred = 1;
s->low_delay = 0; //default, might be overriden in the vol header during header parsing s->low_delay = 0; //default, might be overridden in the vol header during header parsing
s->decode_mb= mpeg4_decode_mb; s->decode_mb= mpeg4_decode_mb;
s->time_increment_bits = 4; /* default value for broken headers */ s->time_increment_bits = 4; /* default value for broken headers */
avctx->chroma_sample_location = AVCHROMA_LOC_LEFT; avctx->chroma_sample_location = AVCHROMA_LOC_LEFT;
......
...@@ -199,7 +199,7 @@ static inline int decide_ac_pred(MpegEncContext * s, DCTELEM block[6][64], const ...@@ -199,7 +199,7 @@ static inline int decide_ac_pred(MpegEncContext * s, DCTELEM block[6][64], const
} }
/** /**
* modify mb_type & qscale so that encoding is acually possible in mpeg4 * modify mb_type & qscale so that encoding is actually possible in mpeg4
*/ */
void ff_clean_mpeg4_qscales(MpegEncContext *s){ void ff_clean_mpeg4_qscales(MpegEncContext *s){
int i; int i;
......
...@@ -708,7 +708,7 @@ av_cold int ff_MPV_common_init(MpegEncContext *s) ...@@ -708,7 +708,7 @@ av_cold int ff_MPV_common_init(MpegEncContext *s)
avcodec_get_chroma_sub_sample(s->avctx->pix_fmt, &s->chroma_x_shift, avcodec_get_chroma_sub_sample(s->avctx->pix_fmt, &s->chroma_x_shift,
&s->chroma_y_shift); &s->chroma_y_shift);
/* set default edge pos, will be overriden in decode_header if needed */ /* set default edge pos, will be overridden in decode_header if needed */
s->h_edge_pos = s->mb_width * 16; s->h_edge_pos = s->mb_width * 16;
s->v_edge_pos = s->mb_height * 16; s->v_edge_pos = s->mb_height * 16;
......
...@@ -162,7 +162,7 @@ static const AVOption options[]={ ...@@ -162,7 +162,7 @@ static const AVOption options[]={
{"explode", "abort decoding on minor error detection", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_EXPLODE }, INT_MIN, INT_MAX, A|V|D, "err_detect"}, {"explode", "abort decoding on minor error detection", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_EXPLODE }, INT_MIN, INT_MAX, A|V|D, "err_detect"},
{"careful", "consider things that violate the spec and have not been seen in the wild as errors", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_CAREFUL }, INT_MIN, INT_MAX, A|V|D, "err_detect"}, {"careful", "consider things that violate the spec and have not been seen in the wild as errors", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_CAREFUL }, INT_MIN, INT_MAX, A|V|D, "err_detect"},
{"compliant", "consider all spec non compliancies as errors", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_COMPLIANT }, INT_MIN, INT_MAX, A|V|D, "err_detect"}, {"compliant", "consider all spec non compliancies as errors", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_COMPLIANT }, INT_MIN, INT_MAX, A|V|D, "err_detect"},
{"aggressive", "consider things that a sane encoder shouldnt do as an error", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_AGGRESSIVE }, INT_MIN, INT_MAX, A|V|D, "err_detect"}, {"aggressive", "consider things that a sane encoder should not do as an error", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_AGGRESSIVE }, INT_MIN, INT_MAX, A|V|D, "err_detect"},
{"has_b_frames", NULL, OFFSET(has_b_frames), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, {"has_b_frames", NULL, OFFSET(has_b_frames), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX},
{"block_align", NULL, OFFSET(block_align), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, {"block_align", NULL, OFFSET(block_align), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX},
{"mpeg_quant", "use MPEG quantizers instead of H.263", OFFSET(mpeg_quant), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, {"mpeg_quant", "use MPEG quantizers instead of H.263", OFFSET(mpeg_quant), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E},
......
...@@ -91,7 +91,7 @@ void ff_fetch_timestamp(AVCodecParserContext *s, int off, int remove){ ...@@ -91,7 +91,7 @@ void ff_fetch_timestamp(AVCodecParserContext *s, int off, int remove){
if ( s->cur_offset + off >= s->cur_frame_offset[i] if ( s->cur_offset + off >= s->cur_frame_offset[i]
&& (s->frame_offset < s->cur_frame_offset[i] || && (s->frame_offset < s->cur_frame_offset[i] ||
(!s->frame_offset && !s->next_frame_offset)) // first field/frame (!s->frame_offset && !s->next_frame_offset)) // first field/frame
//check is disabled because mpeg-ts doesnt send complete PES packets //check is disabled because mpeg-ts doesn't send complete PES packets
&& /*s->next_frame_offset + off <*/ s->cur_frame_end[i]){ && /*s->next_frame_offset + off <*/ s->cur_frame_end[i]){
s->dts= s->cur_frame_dts[i]; s->dts= s->cur_frame_dts[i];
s->pts= s->cur_frame_pts[i]; s->pts= s->cur_frame_pts[i];
......
...@@ -525,7 +525,7 @@ static int shorten_decode_frame(AVCodecContext *avctx, void *data, ...@@ -525,7 +525,7 @@ static int shorten_decode_frame(AVCodecContext *avctx, void *data,
/* get Rice code for residual decoding */ /* get Rice code for residual decoding */
if (cmd != FN_ZERO) { if (cmd != FN_ZERO) {
residual_size = get_ur_golomb_shorten(&s->gb, ENERGYSIZE); residual_size = get_ur_golomb_shorten(&s->gb, ENERGYSIZE);
/* this is a hack as version 0 differed in defintion of get_sr_golomb_shorten */ /* this is a hack as version 0 differed in definition of get_sr_golomb_shorten */
if (s->version == 0) if (s->version == 0)
residual_size--; residual_size--;
} }
......
...@@ -43,7 +43,7 @@ void ff_thread_flush(AVCodecContext *avctx); ...@@ -43,7 +43,7 @@ void ff_thread_flush(AVCodecContext *avctx);
* Returns the next available frame in picture. *got_picture_ptr * Returns the next available frame in picture. *got_picture_ptr
* will be 0 if none is available. * will be 0 if none is available.
* The return value on success is the size of the consumed packet for * The return value on success is the size of the consumed packet for
* compatiblity with avcodec_decode_video2(). This means the decoder * compatibility with avcodec_decode_video2(). This means the decoder
* has to consume the full packet. * has to consume the full packet.
* *
* Parameters are the same as avcodec_decode_video2(). * Parameters are the same as avcodec_decode_video2().
......
...@@ -1709,7 +1709,7 @@ static enum CodecID remap_deprecated_codec_id(enum CodecID id) ...@@ -1709,7 +1709,7 @@ static enum CodecID remap_deprecated_codec_id(enum CodecID id)
{ {
switch(id){ switch(id){
//This is for future deprecatec codec ids, its empty since //This is for future deprecatec codec ids, its empty since
//last major bump but will fill up again over time, please dont remove it //last major bump but will fill up again over time, please don't remove it
// case CODEC_ID_UTVIDEO_DEPRECATED: return CODEC_ID_UTVIDEO; // case CODEC_ID_UTVIDEO_DEPRECATED: return CODEC_ID_UTVIDEO;
default : return id; default : return id;
} }
......
...@@ -150,7 +150,7 @@ int ff_vda_create_decoder(struct vda_context *vda_ctx, ...@@ -150,7 +150,7 @@ int ff_vda_create_decoder(struct vda_context *vda_ctx,
pthread_mutex_init(&vda_ctx->queue_mutex, NULL); pthread_mutex_init(&vda_ctx->queue_mutex, NULL);
/* Each VCL NAL in the bistream sent to the decoder /* Each VCL NAL in the bistream sent to the decoder
* is preceeded by a 4 bytes length header. * is preceded by a 4 bytes length header.
* Change the avcC atom header if needed, to signal headers of 4 bytes. */ * Change the avcC atom header if needed, to signal headers of 4 bytes. */
if (extradata_size >= 4 && (extradata[4] & 0x03) != 0x03) { if (extradata_size >= 4 && (extradata[4] & 0x03) != 0x03) {
uint8_t *rw_extradata; uint8_t *rw_extradata;
......
...@@ -535,7 +535,7 @@ static int decode_tilehdr(WMAProDecodeCtx *s) ...@@ -535,7 +535,7 @@ static int decode_tilehdr(WMAProDecodeCtx *s)
int c; int c;
/* Should never consume more than 3073 bits (256 iterations for the /* Should never consume more than 3073 bits (256 iterations for the
* while loop when always the minimum amount of 128 samples is substracted * while loop when always the minimum amount of 128 samples is subtracted
* from missing samples in the 8 channel case). * from missing samples in the 8 channel case).
* 1 + BLOCK_MAX_SIZE * MAX_CHANNELS / BLOCK_MIN_SIZE * (MAX_CHANNELS + 4) * 1 + BLOCK_MAX_SIZE * MAX_CHANNELS / BLOCK_MIN_SIZE * (MAX_CHANNELS + 4)
*/ */
...@@ -1449,7 +1449,7 @@ static void save_bits(WMAProDecodeCtx *s, GetBitContext* gb, int len, ...@@ -1449,7 +1449,7 @@ static void save_bits(WMAProDecodeCtx *s, GetBitContext* gb, int len,
int buflen; int buflen;
/** when the frame data does not need to be concatenated, the input buffer /** when the frame data does not need to be concatenated, the input buffer
is resetted and additional bits from the previous frame are copyed is reset and additional bits from the previous frame are copied
and skipped later so that a fast byte copy is possible */ and skipped later so that a fast byte copy is possible */
if (!append) { if (!append) {
......
...@@ -67,7 +67,7 @@ $EGREP $OPT '^\+ *(const *|)static' $*| $EGREP --color=always '[^=]= *(0|NULL)[^ ...@@ -67,7 +67,7 @@ $EGREP $OPT '^\+ *(const *|)static' $*| $EGREP --color=always '[^=]= *(0|NULL)[^
cat $TMP cat $TMP
hiegrep '# *ifdef * (HAVE|CONFIG)_' 'ifdefs that should be #if' $* hiegrep '# *ifdef * (HAVE|CONFIG)_' 'ifdefs that should be #if' $*
hiegrep '\b(awnser|cant|dont|wont|usefull|successfull|occured|teh|alot|wether|skiped|heigth|informations|colums|loosy|loosing|ouput|seperate|preceed|upto|paket|posible|unkown|inpossible|dimention)\b' 'common typos' $* hiegrep '\b(awnser|cant|dont|wont|usefull|successfull|occured|teh|alot|wether|skiped|heigth|informations|colums|loosy|loosing|ouput|seperate|preceed|upto|paket|posible|unkown|inpossible|dimention|funtions|overriden|outputing|seperation|initalize|compatibilty)\b' 'common typos' $*
hiegrep 'av_log\( *NULL' 'Missing context in av_log' $* hiegrep 'av_log\( *NULL' 'Missing context in av_log' $*
hiegrep '[^sn]printf' 'Please use av_log' $* hiegrep '[^sn]printf' 'Please use av_log' $*
hiegrep '\bmalloc' 'Please use av_malloc' $* hiegrep '\bmalloc' 'Please use av_malloc' $*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment